Wenn es um MySQL geht, gibt es keinen Vergleich zwischen Speicher-Engines, außer dass es in zwei grundlegende Kategorien fällt:
MySQL bietet die Verwendung mehrerer Speicher-Engines
Die einzigen aufgeführten Speicher-Engines, die ACID-kompatibel sind, sind InnoDB und NDB. Warum ist das wichtig zu erwähnen? Zwei Gründe:
- Andere Speicher-Engines profitieren einfach nicht vom Vorhandensein von mehr Kernen als die Basis-Festplatten-E / A, die CPU-Auslastung und den Gesamtdurchsatz.
- Der Code für jede nicht-transaktionale Speicher-Engine, der unabhängig von der Speicher-Engine im Wesentlichen 14 interne Vorgänge vorschreibt, wurde nicht für den Zugriff auf mehrere Kerne entwickelt.
InnoDB unter MySQL 5.5, InnoDB Plugin) und XtraDB von Percona Server verfügen über Optionen, die Sie festlegen können, um auf mehrere Kerne zuzugreifen (Percona Server hat dies länger getan). Tatsächlich fügt Percona mit jeder neuen GA-Version des MySQL-Quellcodes etwa 30.000 Codezeilen speziell zur Leistungssteigerung von InnoDB ein. Wir können sicher sein, dass Oracle seine eigenen Verbesserungen aus seiner eigenen Denkfabrik in InnoDB für den Multicore-Betrieb aufgenommen hat (seit MySQL 5.1.38).
Da MVCC für Daten in Verbindung mit Zeilen- / Seitensperrung durchgeführt werden muss, kann die Transaktionsleistung jetzt instrumentiert, gemessen und konfiguriert werden.
Wenn es eine Sache gibt, die ich über die Verwendung mehrerer Kerne gelernt habe, ist es, dass Sie InnoDB effektiv optimieren müssen und sich nicht nur sofort auf InnoDB verlassen müssen .
UPDATE 2011-09-20 08:03 EDT
Damit InnoDB von allen Kernen profitiert, müssen wir die Dinge im Auge behalten. Die Kerne müssen auch andere Aufgaben (Betriebssystem, Festplatte, Speicher, Anwendungen, Überwachung usw.) im Datenbankserver übernehmen. Für diejenigen mit bescheidenen Budgets, neigen viele dazu, einen Datenbankserver zu haben, der auch NFS, Überwachung von Munin, App-Unterstützung für JBoss und PHP bietet, und die Liste geht weiter. Wenn MySQL, genauer gesagt InnoDB, mehr Kerne verwenden soll, muss der Datenbankserver ausschließlich für MySQL reserviert sein, und das Betriebssystem / die Festplatte / der Speicher dürfen nur für MySQL reserviert sein . Unter dieser Perspektive wird InnoDB zweifelsohne mehr Kerne einbinden .
Das InnoDB-Plugin wurde nur erwähnt, um frühere Initiativen für eine bessere InnoDB seitens MySQL aufzuzeigen (eh, Oracle. Tut mir leid, es ist immer noch nicht so einfach). Neue Variablen, um mehr Kernaktivität hervorzurufen, wurden in MySQL 5.1.38 offensichtlich.
Beispielsweise weisen innodb_read_io_threads und innodb_write_io_threads (beide seit MySQL 5.1.38) die angegebene Anzahl von Threads für Lese- und Schreibvorgänge zu. Der Standardwert ist 4 und das Maximum ist 64. Die unterschiedlichen Standard- und Maximaleinstellungen (4 - 64) zeigen, dass InnoDB so multithreading- und kernintensiv ist, wie Sie es konfigurieren !!!
Percona befasste sich mit den Anforderungen der MySQL-Community, mit InnoDB auf mehr Kerne zuzugreifen. Infolgedessen folgte MySQL diesem Beispiel. Ich muss zugeben, dass Oracle (yuck) die notwendigen Verbesserungen für mehr Kernaktivität vorgenommen hat.