Maximale Anzahl an Spalten in MySQL

Maximale Anzahl an Spalten in MySQL

am 24.01.2007 11:35:26 von Wolfgang Forstmeier

Hallo NG,

ich suche verzweifelt eine verlässliche Angabe wie viele Spalten MySQL
in der Version 3.x, 4.x, 5.x unterstützt. Im Manual habe ich leider
nichts gefunden. Im Netz gibt es einige wenige Seite die mit anderen
Datenbanken vergleichen. Dort steht eine Zahl von 3398 die ich aber
selbst nicht bestätigen kann.

Kann mir dazu irgend jemand antworten geben ?!


Liebe Grüße,

Wolfgang Forstmeier.

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 11:45:56 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 12:55:23 von Axel Schwenke

Wolfgang Forstmeier wrote:
>
> ich suche verzweifelt eine verlässliche Angabe wie viele Spalten MySQL
> in der Version 3.x, 4.x, 5.x unterstützt. Im Manual habe ich leider
> nichts gefunden. Im Netz gibt es einige wenige Seite die mit anderen
> Datenbanken vergleichen. Dort steht eine Zahl von 3398 die ich aber
> selbst nicht bestätigen kann.

Die Frage stellt sich so normalerweise nicht. Bei einem normalisierten
relationalen Design hat man i.d.R. deutlich weniger Spalten, als die
heutigen RDBMSe verkraften.

Bei MySQL kommt es auf die verwendete Storage Engine an. Außerdem gibt
es i.d.R. mehrere Limits, die alle eingehalten werden müssen. Z.B.

MyISAM: keine Einschränkung der Spaltenzahl, aber alle Spalten (außer
BLOB/TEXT) zusammen dürfen max. 64KB groß werden.

InnoDB: 1000 Spalten, Summe aller Spalten (außer BLOB/TEXT/VARCHAR)
maximal 8KB.


XL

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 13:15:15 von Wolfgang Forstmeier

Andreas Kretschmer wrote:

> Nicht wirklich, aber mal als Frage: Warum willst Du das wissen? Aus
> Angst, Dein Tablesdesign ist nicht umsetzbar?

Das Problem ist leider das dieses "Tabellen Design", ich möchte es
persönlich eigentlich nicht so nennen, schon existiert, und ich damit
arbeiten muss. Es gibt mir leider auch keiner das Geld und die Zeit das
ordentlich neu zu entwerfen. Typischer Fall von "Historische Entwicklung".

> Falls das der Grund der Frage ist: gehe bitte davon aus, daß, falls Du
> auch nur annähernd in diese Grenze kommst, Dein Tabledesign kapott ist.

ACK

>
>
>
> end
> Andreas

Liebe Grüße,

Wolfgang Forstmeier.

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 13:17:38 von Wolfgang Forstmeier

Axel Schwenke wrote:
>
> MyISAM: keine Einschränkung der Spaltenzahl, aber alle Spalten (außer
> BLOB/TEXT) zusammen dürfen max. 64KB groß werden.

Das verstehe ich nicht ganz. Kannst du mir das bitte bisschen genauer
erklären ?! Heißt das, dass eine row, die ich in diese Struktur
einführe, nur 64kb groß sein darf, BLOB/TEXT ausgeschlossen !?

> InnoDB: 1000 Spalten, Summe aller Spalten (außer BLOB/TEXT/VARCHAR)
> maximal 8KB.
>
>
> XL

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 13:23:44 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 14:34:18 von Wolfgang Forstmeier

Andreas Kretschmer wrote:
> begin Wolfgang Forstmeier schrieb:
>>
>> Axel Schwenke wrote:
>>> MyISAM: keine Einschränkung der Spaltenzahl, aber alle Spalten (außer
>>> BLOB/TEXT) zusammen dürfen max. 64KB groß werden.
>> Das verstehe ich nicht ganz. Kannst du mir das bitte bisschen genauer
>> erklären ?! Heißt das, dass eine row, die ich in diese Struktur
>> einführe, nur 64kb groß sein darf, BLOB/TEXT ausgeschlossen !?
>
> Offensichtlich. Unterschiedliche Datentypen belegen unterschiedlich viel
> Speicher (int, float, date, bool, ...), die Summe des belegten Speichers
> darf einen bestimmten Wert nicht übersteigen.

Alles klar. Werde mir das dann mal genauer ansehen.

>
> Vermutlich wird BLOB/TEXT in extra Objekten gespeichert (PostgreSQL:
> TOAST-tables), daher zählt das nicht, wobei vermutlich ein paar Byte für
> Zeiger aber auch drauf gehen.

Das wäre nicht schlimm, sind meist alles double types.

>
>
> Btw.: hab Dein anderes Posting gelesen, ich würde abraten, sowas auch nur
> mit Vollschutzanzug anzufassen.

Tja, leider kann ich mir das hier nicht aussuchen. Aber falls du einen
Arbeitgeber weißt der noch Leute sucht habe ich gerne ein offenes Ohr ;-).

>
>
> end
> Andreas

Liebe Grüße,

Wolfgang Forstmeier.

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 14:35:53 von Axel Schwenke

Wolfgang Forstmeier wrote:
> Axel Schwenke wrote:
>>
>> MyISAM: keine Einschränkung der Spaltenzahl, aber alle Spalten (außer
>> BLOB/TEXT) zusammen dürfen max. 64KB groß werden.
>
> Das verstehe ich nicht ganz. Kannst du mir das bitte bisschen genauer
> erklären ?! Heißt das, dass eine row, die ich in diese Struktur
> einführe, nur 64kb groß sein darf, BLOB/TEXT ausgeschlossen !?

Zumindest verstehe ich das Manual so:
http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine .html

Hier wird zwar nur von "Summe CHAR() + VARCHAR()" gesprochen,
aber ich nehme stark an, daß das für *alle* Spalten gilt.
Die wahrscheinlichste Erklärung ist das .frm Format für die
Beschreibung einer Tabelle:
http://dev.mysql.com/doc/internals/en/fileformats-frm.html

Hier ist 'rec_length' mit 2 Byte angegeben. Also max. 65535.
Damit ist auch klar, daß das das obere Limit ist, egal welche
Storage Engine du verwendest. Allerdings kann die Storage
Engine selber auch ein niedrigeres Limit haben.


XL

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 17:29:31 von Gregor Kofler

Wolfgang Forstmeier meinte:
>
>
> Andreas Kretschmer wrote:
>
>> Nicht wirklich, aber mal als Frage: Warum willst Du das wissen? Aus
>> Angst, Dein Tablesdesign ist nicht umsetzbar?
>
> Das Problem ist leider das dieses "Tabellen Design", ich möchte es
> persönlich eigentlich nicht so nennen, schon existiert, und ich damit
> arbeiten muss. Es gibt mir leider auch keiner das Geld und die Zeit das
> ordentlich neu zu entwerfen. Typischer Fall von "Historische Entwicklung".

Aber warum muss es dann MySQL sein? Wenn MySQL eben nicht ausreichend
viele Spalten mit Sicherheit verarbeiten kann, führt eben kein Weg um
ein anderes Produkt oder ein Neudesign herum.

Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Maximale Anzahl an Spalten in MySQL

am 24.01.2007 17:35:06 von Wolfgang Forstmeier

>
> Aber warum muss es dann MySQL sein? Wenn MySQL eben nicht ausreichend

Weil andere Datenbanken gar nicht erst so viel unterstützen wie MySQL.
Aber das ein anderes Thema hier.

> viele Spalten mit Sicherheit verarbeiten kann, führt eben kein Weg um
> ein anderes Produkt oder ein Neudesign herum.
>
> Gruß, Gregor

Gruß Wolfgang.

>
>

Re: Maximale Anzahl an Spalten in MySQL

am 25.01.2007 11:56:12 von Andreas Scherbaum

Gregor Kofler wrote:
> Wolfgang Forstmeier meinte:
>>
>> Andreas Kretschmer wrote:
>>
>>> Nicht wirklich, aber mal als Frage: Warum willst Du das wissen? Aus
>>> Angst, Dein Tablesdesign ist nicht umsetzbar?
>>
>> Das Problem ist leider das dieses "Tabellen Design", ich möchte es
>> persönlich eigentlich nicht so nennen, schon existiert, und ich damit
>> arbeiten muss. Es gibt mir leider auch keiner das Geld und die Zeit das
>> ordentlich neu zu entwerfen. Typischer Fall von "Historische Entwicklung".
>
> Aber warum muss es dann MySQL sein? Wenn MySQL eben nicht ausreichend
> viele Spalten mit Sicherheit verarbeiten kann, führt eben kein Weg um
> ein anderes Produkt oder ein Neudesign herum.

Weil man anderswo schon beim Design (also, äh, beim Zusammenklicken Hunderter
Spalten) festgestellt hätte, dass das so nicht funktioniert ;-)


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Maximale Anzahl an Spalten in MySQL

am 25.01.2007 14:13:27 von Christian Schmelzer

Andreas Scherbaum wrote:
> Gregor Kofler wrote:
>> Wolfgang Forstmeier meinte:
>>>
>>> Andreas Kretschmer wrote:
>>>
>>>> Nicht wirklich, aber mal als Frage: Warum willst Du das wissen? Aus
>>>> Angst, Dein Tablesdesign ist nicht umsetzbar?
>>>
>>> Das Problem ist leider das dieses "Tabellen Design", ich möchte es
>>> persönlich eigentlich nicht so nennen, schon existiert, und ich
>>> damit arbeiten muss. Es gibt mir leider auch keiner das Geld und
>>> die Zeit das ordentlich neu zu entwerfen. Typischer Fall von
>>> "Historische Entwicklung".
>>
>> Aber warum muss es dann MySQL sein? Wenn MySQL eben nicht ausreichend
>> viele Spalten mit Sicherheit verarbeiten kann, führt eben kein Weg um
>> ein anderes Produkt oder ein Neudesign herum.
>
> Weil man anderswo schon beim Design (also, äh, beim Zusammenklicken
> Hunderter Spalten) festgestellt hätte, dass das so nicht funktioniert
> ;-)
>

Hallo,
bestimmt war die Ausgangs-"Datenbank" Access. Ich hab auch mal so ein
Projekt Access -> Mysql übernommen. Sowas geht fast immer schief, weil
solche Access Datenbanken von irgendwelchen Office Heinis zusammengeklickt
wurden, die von nix eine Ahnung haben. Dann aber mal schnell die Desktop-DB
Access in Mysql umwandeln und ins Netz stellen. Ich hatte das Projekt dann
abgebrochen, da das gesamte DB Design Schrott von vorne bis hinten war und
der Kunde es nicht einsehen wollte.

Christian