Kapitel 8: MySQL-Tab ellentypen 495
• Die Daten f¨ur HEAP-Tabellen werden in kleinen Bl¨ocken zugewiesen. Die Tabellen
sind 100% dynamisch (beim Einf¨ugen). Es werden keine Overflow-Bereiche und kein
zus¨atzlicher Platz f¨ur Schl¨ussel ben¨otigt. Gel¨oschte Zeilen werden in eine verkn¨upfte
Liste geschrieben und wieder benutzt, wenn Sie neue Daten in die Tabelle einf¨ugen.
• Sie brauchen genug zus¨atzlichen Arbeitsspeicher f¨ur alle HEAP-Tabellen, die Sie zugleich
benutzen wollen.
• Um Speicher freizugeben, f¨uhren Sie DELETE FROM heap_tabelle, TRUNCATE
heap_tabelle oder DROP TABLE heap_tabelle aus.
• MySQL kann nicht herausfinden, wie viele Zeilen es zwischen zwei Werten ungef¨ahr
gibt (das wird vom Bereichsoptimierer ben¨otigt, um zu entscheiden, welcher Index
benutzt wird). Das kann einige Anfragen b etreffen, wenn Sie eine MyISAM-Tabelle in
eine HEAP-Tabelle umwandeln.
• Um sicherzustellen, dass Sie nicht versehentlich etwas Unkluges tun, k¨onnen Sie keine
HEAP-Tabellen gr¨oßer als max_heap_table_size erzeugen.
Der f¨ur eine Zeile in einer HEAP-Tabelle ben¨otigte Speicher ist:
SUM_OVER_ALL_KEYS(max_length_of_key + sizeof(char*) * 2)
+ ALIGN(length_of_row+1, sizeof(char*))
sizeof(char*) ist 4 auf 32-Bit-Maschinen und 8 auf 64-Bit-Maschinen.
8.5 InnoDB-Tabellen
8.5.1
¨
Uberblick ¨uber InnoDB-Tabellen
InnoDB stellt MySQL einen transaktionssicheren (ACID-kompatiblen) Tab ellen-Handler mit
F¨ahigkeiten f¨ur Commit, Rollback und Reparatur nach Absturz zur Verf¨ugung. InnoDB
beherrscht Sperren auf Zeilenebene sowie ein konsistentes, nicht sperrendes Lesen in der Art
von Oracle bei SELECTs. Diese Features steigern die Handhabung gleichzeitiger Verbindun-
gen und die Performance. Es gibt bei InnoDB keine Notwendigkeit f¨ur Sperr-Eskalation,
weil die Sperren auf Zeilenebene bei InnoDB in sehr wenig Speicherplatz passen. InnoDB-
Tabellen unterst¨utzen als erster Tabellentyp in MySQL FOREIGN KEY-Beschr¨ankungen.
InnoDB wurde f¨ur maximale Performance bei der Bearbeitung großer Datenmengen ent-
worfen. Seine Prozessor-Effizienz wird wahrscheinlich von keiner anderen Festplatten-
basierenden relationalen Datenbank-Engine erreicht.
Technisch gesehen ist InnoDB ein komplettes Datenbank-Backend, das unter MySQL
platziert ist. InnoDB hat seinen eigenen Puffer-Pool, um Daten und Indexe im
Hauptspeicher zu cachen. InnoDB speichert seine Tab ellen und Indexe in einem
Tabellenplatz (Tablespace), der aus mehreren Dateien bestehen kann. Das unterscheidet
sich beispielsweise von MyISAM-Tabellen, bei denen jede Tabelle als separate Datei
gespeichert ist. InnoDB-Tabellen k¨onnen jede beliebige Gr¨oße annehmen, sogar auf
Betriebssystemen, deren Dateigr¨oße auf 2 GB beschr¨ankt ist.
Die neuesten Informationen ¨uber InnoDB finden Sie unter http://www.innodb.com/. Die
aktuellste Version des InnoDB-Handbuchs ist immer dort zu finden, und Sie k¨onnen auch
kommerzielle Lizenzen und kommerziellen Support f¨ur InnoDB bestellen.
Kommentare zu diesen Handbüchern