Gemäß Titel: Gibt es eine kurze Liste von Kandidaten für Tabellen, die nach InnoDB migriert werden sollen? Und was soll MyISAM bleiben.
Einige zusätzliche Informationen
- Die Site hat eine ziemlich hohe Leselast, fügt jedoch ungefähr 10 Knoten pro Stunde mit Tags und dergleichen ein.
- Wir nutzen CCK (eine große Anzahl normalisierter Tabellen in Form von
content_field%
). - Wir verwenden Ansichten auch für alle unsere Blöcke und Seiten. Viele davon können jedoch durch benutzerdefinierte Module ersetzt werden (um Datenbankabfragen und die Schwere dieser Abfragen zu verringern).
- Benutzer sind alle anonym; mit Ausnahme einiger weniger angemeldeter Editoren und Webmaster.
performance
database
berkes
quelle
quelle
Antworten:
Sie sollten alle Daten in InnoDB konvertieren, um Probleme beim Sperren von Tabellen zu vermeiden. Hier sind jedoch einige Dinge zu beachten:
FULLTEXT-Indizierung
Derzeit unterstützt nur MyISAM die FULLTEXT-Indizierung. Die FULLTEXT-Indizierung für InnoDB ist derzeit für MySQL 5.6 in Arbeit, jedoch nicht produktionsbereit . Wenn Sie Drupal-Tabellen mit FULLTEXT-Indizes haben, können diese derzeit nicht in InnoDB konvertiert werden.
UPDATE zur FULLTEXT-Indizierung
MySQL 5.6 ist jetzt GA (out for Production Use). Bitte probieren Sie die FULLTEXT-Indizierung in InnoDB aus.
FULLTEXT
Führen Sie die folgende Abfrage aus, um die Tabellen mit einem Index zu suchen:Wenn keine Zeilen zurückkommen, konvertieren Sie alle InnoDB-Tabellen nach Herzenslust. Ich habe einen früheren Beitrag darüber geschrieben, wie alle MyISAM-Tabellen nur mit MySQL in InnoDB konvertiert werden .
MySQL-Replikation
Wenn Sie eine Umgebung mit vielen Lesevorgängen haben, können Lesevorgänge in MyISAM schneller ausgeführt werden, wenn Sie Folgendes tun:
--skip-innodb
/etc/my.cnf für alle Slaves hinzu (konvertiert Tabellen in MyISAM, wenn Daten in den Slave geladen werden).ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
auf den Seiten 72, 73. Dadurch werden alle VARCHAR-Felder intern in CHAR konvertiert. Dadurch wird die MyISAM-Tabelle größer, aber ausgeführte SELECTs dagegen werden viel schneller ausgeführt. Das kann ich persönlich bezeugen. Ich hatte einmal einen Tisch mit 1,9 GB. Ich habe das Format mit geändertALTER TABLE tblname ROW_FORMAT=FIXED
. Die Tabelle endete mit 3,7 GB. Die Geschwindigkeit der SELECTs dagegen war 20-25% schneller, ohne etwas anderes zu verbessern oder zu ändern.Das einzige Problem dabei ist, Ihre Anwendung auf separate Leseslaves aufmerksam zu machen.
EPILOG
Wenn Sie sich andere Vorteile ansehen, die jede Speicher-Engine bietet, überprüfen Sie den DBA StackExchange:
Apr 14, 2011
: Was sind die Hauptunterschiede zwischen InnoDB und MyISAM?Sep 20, 2011
: Best of MyISAM und InnoDBMay 02, 2012
: Welche MySQL-Speicher-Engine soll ich wählen?May 03, 2012
: Was ist schneller, InnoDB oder MyISAM?quelle
Da Ihre Website schwer lesbar ist, würde ich einfach alle Tabellen in InnoDB konvertieren. Sie können dann die Leseleistung optimieren, indem Sie den InnoDB-Pufferpool und den Abfragecache entsprechend dimensionieren. Auf diese Weise erreichen wir mehrere tausend Abfragen pro Sekunde auf den dedizierten Datenbankservern in unserer Drupal-Hosting-Infrastruktur.
quelle