it-swarm.com.de

Drupal Datenbank innodb oder MyISAM?

Ich habe eine Drupal -Site und habe Leistungsprobleme. Ich habe Wie konvertiere ich eine Datenbank von MyISAM nach InnoDB? , was darauf hinweist, dass sich die Leistung durch Umschalten verbessern kann.

Wie kann ich feststellen, ob meine MySQL-Datenbank InnoDB oder MyISAM ist?

10
chrisjlee

Sie können eine benutzerdefinierte Abfrage ausführen:

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database_name'

um alle Tabellen in Ihrer Datenbank und die jeweils verwendete Engine aufzulisten.

Alternativ können Sie sich mit phpMyAdmin in Ihre Datenbank einloggen und Ihre Datenbank auswählen. Die Engine wird in der Spalte Type in der Liste der Tabellen angezeigt.

Persönlich würde ich empfehlen Navicat für MySQL , es ist eine sehr schöne MySQL-GUI und macht es sehr einfach, solche Dinge herauszufinden.

Quelle: http://www.electrictoolbox.com/mysql-table-storage-engine/

8
Clive

Meine beste Erfahrung war es, pro Tisch zu entscheiden. InnoDB ist nett, weil es das Sperren von Tabellen vermeiden kann (kein anderer Prozess kann aus einer Tabelle lesen, während ein Prozess schreibt), aber es funktioniert hervorragend mit COUNT (), das häufig für Pager-Abfragen verwendet wird.

(Bearbeiten: siehe Clives Kommentar unten)

Es gibt auch Auswirkungen auf Ihr MySQL-Setup, je nachdem, welche Datenbank Sie verwenden. Wenn Sie Zugriff auf den Server haben, sollte mysqltuner Ihr erster Schritt sein, um die Konfiguration zu überprüfen:

https://github.com/rackerhacker/MySQLTuner-Perl#readme

6
Martin

Nur Dinge auszuprobieren, um eine Website schneller zu machen, ist wie blindlings Autos zu wechseln und zu hoffen, dass Sie beim nächsten Mal eine schnellere bekommen.

Versuchen Sie zuerst die niedrig hängenden Früchte. Wenn es nicht hilft, versuchen Sie, den wirklichen Engpass zu finden.

  1. Haben Sie die integrierten Mechanismen aktiviert: Seiten-Caching (nur für anonyme Benutzer wirksam), CSS- und JS-Agregation?
  2. Wenn Ihr Host einen Opcode-Cache wie APC anbietet, aktivieren Sie ihn.
  3. Richten Sie Ihre Drupal-Region) ein, einschließlich der vollständigen Datenbank.
  4. Stellen Sie sicher, dass XDebug ausgeführt wird.
  5. Beginnen Sie mit der Erstellung echter Leistungsprofile. Auf diese Weise können Sie feststellen, welcher Teil Ihrer Website viel Zeit in Anspruch nimmt. Je langsamer Ihre Website ist, desto einfacher ist es, den schuldigen Code/die schuldige Komponente zu finden.

Oft ist es nur eine langsame DB-Abfrage, die einen Index benötigt, oder ein Modul, das Dinge langsam erledigt.

Ich habe auch große Unterschiede zwischen Hostern entdeckt. Wenn Sie ein neues drupal out of the box) installieren, ist die Leistung in Ordnung? Wenn nicht, ist es Zeit, nach einem anderen Hoster zu suchen.

6
BetaRide

Nur ein Kopf hoch. Wenn Sie on Drupal 6) sind, können Sie das Modul DBTuner installieren. Es kann Ihre Tabellen problemlos von MyISAM nach InnoDB verschieben. Also ja, dafür gibt es ein Modul!

5
mikeytown2

FWIW unser fast 20K-Knoten Drupal 6.x-Site hatte einige Leistungsprobleme und ich entschied mich, alle Tabellen nach InnoDB zu verschieben. Es war einfach und die Art und Weise, wie ich damit umging, war, mysqldump zu verwenden Speichern Sie den gesamten Inhalt in einer SQL-Datei. Verwenden Sie einen Editor (sed), um alle Vorkommen von MyISAM in InnoDB zu ersetzen, und laden Sie dann die Datenbank aus dieser Datei neu. Einer der Nachteile ist, dass Sie keinen Speicherplatz aus einer InnoDB-Datenbank (IIRC) wiederherstellen können, sondern als Solange Sie Ihre doppelten Tabellen in einer separaten Datenbank aufbewahren, sollten Sie keine Probleme haben. Oh, und wir haben eine signifikante Leistungssteigerung festgestellt. Und weil wir vier Drupal Instanzen haben, die schiere Anzahl von Tabellendateien wurde aus dem Dateisystem entfernt (ja, sie sind in der InnoDB-Datei selbst enthalten). Dies ist mein Wert von 0,02 USD.

5
bobmct