PythonQ 240-8XX Manual de usuario Pagina 542

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 541
Kapitel 8: MySQL-Tab ellentypen 521
Index-Scans onnen beschleunigt werden, wenn Sie von Zeit zu Zeit mysqldump benutzen,
um die Tabelle in eine Textdatei zu dumpen, dann die Tabelle zu oschen und sie aus dem
Dump neu aufzubauen. Eine weitere oglichkeit zur Defragmentierung besteht darin, den
Tabellentyp in MyISAM zu ¨andern (ALTER) und danach wieder in InnoDB zur¨uck. Beachten
Sie, dass die MyISAM-Tabelle auf Ihrem Betriebssystem in eine einzige Datei passen muss.
Wenn die Einf¨ugungen in einen Index immer aufsteigend sind und Datens¨atze nur vom
Ende gel¨oscht werden, garantiert der Speicherplatzverwaltungs-Algorithmus von InnoDB,
dass keine Fragmentierung im Index auftritt.
8.5.13 Fehlerbehandlung
Die Fehlerbehandlung in InnoDB ist nicht immer so, wie es die ANSI-SQL-Standards festle-
gen. Nach ANSI-Standard sollte jeder Fehler ahrend eines SQL-Statements ein Rollback
des Statements verursachen. InnoDB rollt manchmal nur Teile des Statements oder auch
die gesamte Transaktion zur¨uck. Folgende Liste gibt die Fehlerbehandlung von InnoDB an:
Wenn es keinen Speicherplatz mehr im Tabellenplatz (Tablespace) gibt, bekommen Sie
den MySQL-Fehler ’Table is full’ und InnoDB rollt das SQL-Statement zur¨uck.
Eine Transaktions-Blockierung o der eine Zeit¨uberschreitung beim Warten auf eine
Sperre f¨uhren dazu, dass InnoDB die gesamte Transaktion zur¨uckrollt.
Ein Fehler wegen doppelter Schl¨usseleintr¨age rollt das Einf¨ugen dieser Zeile zur¨uck,
selbst in einem Statement wie INSERT INTO ... SELECT .... Das wird sich voraus-
sichtlich ¨andern, so dass das SQL-Statement zur¨uckgerollt wird, wenn Sie die IGNORE-
Option in Ihrem Statement nicht angegeben haben.
Ein Fehler ’row too long’ rollt das SQL-Statement zur¨uck.
Andere Fehler werden zumeist durch die MySQL-Code-Ebene entdeckt und rollen das
entsprechende SQL-Statement zur¨uck.
8.5.14 Beschr¨ankungen von InnoDB-Tabellen
ACHTUNG: Konvertieren Sie KEINE MySQL-Systemtabellen von MyISAM in
InnoDB-Tabellen! Das wird nicht unterst¨utzt. Wenn Sie es dennoch tun, startet
MySQL nicht mehr, bis Sie die alten Systemtabellen aus einer Datensicherung
wiederhergestellt haben oder sie mit dem mysql install db-Skript neu erzeugen.
SHOW TABLE STATUS gibt keine genauen Statistiken ¨uber InnoDB-Tabellen, ausser ¨uber
die physikalische Gr¨oße, die durch die Tabelle reserviert wird. Der Zeilenz¨ahler ist nur
eine grobe Sch¨atzung, die bei der SQL-Optimierung benutzt wird.
Wenn Sie versuchen, einen eindeutigen Index auf ein Pr¨afix einer Spalte zu erzeugen,
erhalten Sie einen Fehler:
CREATE TABLE T (A CHAR(20), B INT, UNIQUE (A(5))) TYPE = InnoDB;
Wenn Sie einen nicht eindeutigen Index auf ein Spaltenpr¨afix erzeugen, erzeugt InnoDB
einen Index ¨uber die gesamte Spalte.
INSERT DELAYED wird f¨ur InnoDB-Tabellen nicht unterst¨utzt.
Die MySQL-LOCK TABLES-Operation weiß nichts von InnoDB-Sperren auf Zeilenebene,
die in bereits fertigen SQL-Statements gesetzt sind. Das bedeutet, dass Sie eine Tabel-
lensperre auf eine Tabelle selbst dann erhalten onnen, wenn es noch Transaktionen
Vista de pagina 541
1 2 ... 537 538 539 540 541 542 543 544 545 546 547 ... 767 768

Comentarios a estos manuales

Sin comentarios