web-dev-qa-db-ger.com

Was sind MySQL-Datenbank-Engines?

Ich habe mich umgesehen und festgestellt, dass einige der MySQL-Engines Innodb und MyISAM sind. Vielleicht gibt es noch ein paar mehr. Meine Frage ist, was sind diese Datenbank-Engines?

Was sind die Unterschiede zwischen verschiedenen MySQL-Engines? Und was noch wichtiger ist: Wie entscheide ich mich für eine?

68
pavanred
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Ich persönlich benutze immer InnoDB, wenn ich MySQL verwenden muss. Es unterstützt Transaktionen und Fremdschlüssel, MyISAM jedoch nicht.

69
Vincent Savard

MyISAM und InnoDB sind die am häufigsten verwendeten Engines.

MyISAM ist etwas schneller als InnoDB und implementiert den FULLTEXT-Index, der für die Integration von Suchfunktionen sehr nützlich ist. MyISAM wird nicht abgewickelt und implementiert keine Fremdschlüsseleinschränkungen, was ein großer Nachteil ist.

Sie können jedoch das Beste aus beiden verwenden und Tabellen mit verschiedenen Speicher-Engines erstellen. Einige Programme (WordPress, glaube ich) verwenden Inno für die meisten Daten, wie zum Beispiel Beziehungen zwischen Seiten, Versionen usw. Datensätze für die Posts enthalten eine ID, die auf einen Datensatz in einer separaten Inhaltstabelle verweist, in der MyISAM verwendet wird. Auf diese Weise wird der Inhalt in der Tabelle mit den besten Suchfunktionen gespeichert, während die meisten anderen Daten in Tabellen gespeichert werden, die die Datenintegrität gewährleisten.

Wenn ich Sie wäre, würde ich mich für Inno entscheiden, weil es das zuverlässigste ist. Verwenden Sie MyISAM nur für bestimmte Zwecke, wenn dies erforderlich ist.

Sie können Ihre Datenbank so konfigurieren, dass beim Erstellen neuer Tabellen standardmäßig InnoDB verwendet wird.

38
GolezTrol

Verschiedene Speicher-Engines sind verfügbar. Es gibt nur wenige Gründe, warum Sie weder die MyISAM- noch die InnoDB-Engines verwenden sollten. MyISAM funktioniert in den meisten Situationen, aber wenn Sie im Vergleich zu Ihren Such- und Auswahlmöglichkeiten eine hohe Anzahl von Aktualisierungen oder Einfügungen haben, wird die Leistung der InnoDB-Engine verbessert. Um die bestmögliche Leistung von InnoDB zu erzielen, müssen Sie die Parameter für Ihren Server optimieren. Andernfalls gibt es keinen Grund, diese nicht zu verwenden.

Die MERGE-Engine ist eine äußerst effektive Methode zum Abfragen von Daten aus mehreren, identisch definierten Tabellen. Die MEMORY-Engine ist die beste Möglichkeit, eine große Anzahl komplexer Abfragen von Daten durchzuführen, die für die Suche auf einer festplattenbasierten Engine ineffizient wären. Die CSV-Engine ist eine großartige Möglichkeit, Daten zu exportieren, die in anderen Anwendungen verwendet werden könnten. BDB eignet sich hervorragend für Daten mit einem eindeutigen Schlüssel, auf den häufig zugegriffen wird.

This Image provides an overview of some storage engines provided with MySQL:

12
rajangupta

Möglicherweise erhalten Sie hier weitere Informationen: https://en.wikipedia.org/wiki/Database_engine

Ein Datenbankmodul (oder Speichermodul) ist die zugrunde liegende Softwarekomponente, mit der ein Datenbankverwaltungssystem (DBMS) Daten in einer Datenbank erstellt, liest, aktualisiert und löscht. Die meisten Datenbankverwaltungssysteme verfügen über eine eigene API (Application Programming Interface), mit der der Benutzer mit der zugrunde liegenden Engine interagieren kann, ohne die Benutzeroberfläche des DBMS zu durchlaufen.

1
Mogli