28.6 Reihen - Formate (row format)
MySQL kennt keine echten SQL VARCHAR Typen, daf�r besitzt MySQL 3
verschiedene M�glichkeiten, Eintr�ge zu speichern und VARCHAR zu emulieren.
Falls eine Tabelle keine VARCHAR, BLOB oder TEXT Spalten enth�lt, dann wird
intern in der MySQL Datenbank eine feste Gr��e einer Spalte angenommen.
Andernfalls, also wenn nur eine einzige Spalte von einem variablen Typ ist,
dann wird eine dynamische Spaltengr��e angenommen. CHAR und VARCHAR Spalten
werden dann aus der Sicht der Anwendung identisch behandelt.
Das Format der Tabellen kann man mit dem SHELL-Befehl isamchk -d
.... (das d steht f�r beschreibe die Tabelle) ausgeben lassen.
MySQL besitzt 3 verschiedene Tabellenformate, fest, dynamisch und
compressed. Diese werden nun im einzelnen vorgestellt:
- Fest ist das Standardformat. Es wird verwendet, wenn die
Tabelle keine VARCHAR, BLOB oder TEXT Spalten enth�lt. Die Vorteile sind,
da� die Datenbank sehr schnell ist, leicht zu cachen, leicht zu reparieren
(Im Falle eines Crash), ben�tigt keine st�ndige Reorganisation (isamchk),
solange nicht Eintr�ge in gr��erer Anzahl gel�scht werden, verbarucht aber
auch gew�hnlich mehr Speicherplatz, als dynamische Tabellen (�berfl�ssige
Platzhalter).
- Dynamisch wird automatisch eingesetzt, sobald VARCHAR, BLOB
oder TEXT Felder definiert werden, oder die L�nge gr��er als 4 Bytes ist.
Dynamische Felder besitzen einige Eigenheiten:
- Alle Spaltenwerte werden auf dynamisch gesetzt.
- Jeder Eintrag besitzt eine Bitmap, die anzeigt, welche Spalte leer
ist. Hierzu werden doppelte Anf�hrungszeichen oder 0 verwendet. Nicht leere
Strings enthalten zuerst die L�nge, danach folgt der Inhalt.
- Dynamische Felder verbrauchen viel weniger Platz
- Wenn Eintr�ge gr��er werden, dann findet eine automatische
Fragmentierung statt, die von Zeit zu Zeit mit isamchk -r bereinigt
werden mu�. Der Befehl isamchk -ei tbl_name zeigt Statistiken an.
- Dynamische Tabellen sind schwieriger zu rekonstruieren, weil eventuell
ein Teil der Fragmentierungsinformationen verlorengegengen ist.
- Komprimierte Tabellen sind read-only Tabellen, die zuvor mit
dem pack_isam Utility komprimiert wurden. Alle registrierten User
mit erweitertem E-Mail Support erhalten eine Kopie dieses Programmes.
Diese Tabellen verbrauchen sehr wenig Speicherplatz. Jeder Eintrag wird
separat komprimiert (wichtig zu wissen, da die Kompression insgesamt dann
nicht so gut ist, als wenn man alle Eintr�ge komprimieren w�rde, wie bei
ZIP, also weg damit !). Blob und TEXT Spalten werden nicht komprimiert !!!