MySQL Version 3.22 hatte eine Begrenzung auf 4 Gbyte bei der
Tabellengröße. Mit der Speicher-Engine MyISAM
in MySQL Version 3.23 wurde die maximale Tabellengröße auf
65.536 Terabyte (2567 – 1 Byte)
erhöht. Das bedeutet, dass die maximale effektive Tabellengröße
von MySQL-Datenbanken normalerweise durch Beschränkungen des
Betriebssystems hinsichtlich Dateigrößen festgelegt ist, nicht
durch MySQL-interne Grenzen.
Die Speicher-Engine InnoDB
hält
InnoDB
-Tabellen in einem Tablespace, der aus
mehreren Dateien bestehen kann. Hierdurch ist es möglich, dass
eine Tabelle die maximale Größe einer einzelnen Datei
überschreitet. Der Tablespace kann auch rohe
Festplattenpartitionen beinhalten, wodurch extrem große Tabellen
möglich werden. Die maximale Größe des Tablespaces beträgt 64
Terabyte.
Im Folgenden sind einige Beispiele für Dateigrößen aufgeführt, die durch Betriebssysteme veranlasst sind. Die Tabelle soll nur als Anhaltspunkt dienen. Sie ist in keiner Weise auf Vollständigkeit bedacht. Die aktuellsten Informationen erhalten Sie in der Dokumentation Ihres Betriebssystems.
Betriebssystem | Maximale Dateigröße |
Linux 2.2-Intel 32-bit | 2 Gbyte (LFS: 4 Gbyte) |
Linux 2.4+ | (mit Dateisystem ext3) 4 Tbyte |
Solaris 9/10 | 16 Tbyte |
NetWare w/NSS Dateisystem | 8 Tbyte |
Win32 w/ FAT/FAT32 | 2 Gbyte/4 Gbyte |
Win32 w/ NTFS | 2 Tbyte (möglicherweise mehr) |
Mac OS X w/ HFS+ | 2 Tbyte |
Unter Linux 2.2 können Sie MyISAM
-Tabellen mit
mehr als 2 Gbyte erzeugen, indem Sie den Large File
Support(LFS)-Patch für das Dateisystem ext2 einspielen. Unter
Linux 2.4 bestehen Patches für ReiserFS, die Unterstützung für
große Dateien bieten (bis zu 2 Tbyte). Die meisten aktuellen
Linux-Distributionen basieren auf Kernel 2.4 oder höher und
enthalten sämtliche erforderlichen LFS-Patches. Mit JFS und XFS
sind unter Linux Dateien im Petabytebereich und darüber hinaus
möglich. Die maximal erreichbare Dateigröße hängt jedoch immer
noch von mehreren Faktoren ab, unter anderem vom Dateisystem, auf
dem MySQL-Tabellen gespeichert werden.
Einen detaillierten Überblick über LFS unter Linux bietet die Seite Large File Support in Linux von Andreas Jäger, die Sie hier finden: http://www.suse.de/~aj/linux_lfs.html.
Wichtiger Hinweis für Windows-Benutzer: FAT und VFAT (FAT32) sind nicht für den Produktionseinsatz von MySQL geeignet. Benutzen Sie stattdessen NTFS.
Standardmäßig erzeugt MySQL MyISAM
-Tabellen
mit einer internen Struktur, die eine maximale Größe von 4 Gbyte
erlaubt. Sie können die maximale Tabellengröße einer
MyISAM
-Tabelle mit der Anweisung SHOW
TABLE STATUS
oder mittels myisamchk -dv
tbl_name
feststellen. Siehe
Abschnitt 13.5.4, „SHOW
“.
Wenn Sie eine MyISAM
-Tabelle brauchen, die
größer als 4 Gbyte ist, und Ihr Betriebssystem große Dateien
unterstützt, können Sie in der CREATE
TABLE
-Anweisung die Optionen
AVG_ROW_LENGTH
und MAX_ROWS
verwenden, siehe Abschnitt 13.1.5, „CREATE TABLE
“. Sie können diese
Optionen auch mit ALTER TABLE
ändern, um die
maximale Tabellengröße zu verändern, nachdem die Tabelle
erzeugt wurde, siehe Abschnitt 13.1.2, „ALTER TABLE
“.
Darüber hinaus gibt es weitere Möglichkeiten, die
Dateigrößenbeschränkung von MyISAM
-Tabellen
zu umgehen:
Für schreibgeschützte Tabellen kann man myisampack verwenden, das diese komprimiert. myisampack komprimiert eine Tabelle normalerweise um mindestens 50 %, wodurch Sie im Endeffekt wesentlich größere Tabellen verwalten können. myisampack kann darüber hinaus mehrere Tabellen in einer einzigen Tabelle zusammenfassen, siehe Abschnitt 8.4, „myisampack — Erzeugung komprimierter, schreibgeschützter MyISAM Tabellen“.
MySQL enthält eine MERGE
-Bibliothek, die
es erlaubt, eine Sammlung von
MyISAM
-Tabellen mit identischer Struktur
als einzelne MERGE
-Tabelle anzusprechen,
siehe Abschnitt 14.3, „Die MERGE
-Speicher-Engine“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.