Was sind MySQL-Datenbankmodule? [geschlossen]

71

Ich habe mich umgesehen und festgestellt, dass einige der MySQL-Engines innodb und MyISAM sind. Vielleicht gibt es noch wenige. 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?

gepflastert
quelle
1
Siehe auch
Pekka

Antworten:

72
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 InnoDB immer, wenn ich MySQL verwenden muss. Es unterstützt Transaktions- und Fremdschlüssel, MyISAM nicht.

Vincent Savard
quelle
39

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

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 Softwareprogramme (WordPress, glaube ich) verwenden Inno für die meisten Daten, z. B. Beziehungen zwischen Seiten, Versionen usw. Datensätze für die Beiträge enthalten eine ID, die mit einem Datensatz in einer separaten Inhaltstabelle verknüpft ist, die MyISAM verwendet. 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 erzwingen.

Wenn ich du wäre, würde ich Inno wählen, weil es das zuverlässigste ist. Verwenden Sie MyISAM nur für bestimmte Zwecke, wenn Sie dies benötigen.

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

GolezTrol
quelle
Eine weitere Einschränkung von MyISAM besteht darin, dass der (Primär-) Schlüssel (einzeln oder zusammengesetzt) ​​nicht länger als 1000 Byte sein darf. In den meisten Fällen ist dies in Ordnung. Sie können diese Grenze jedoch möglicherweise erreichen, wenn Sie einige größere BI-Modelle erstellen.
Paulo Bueno
15

Da verschiedene Speicher-Engines verfügbar sind, gibt es nur wenige Gründe, weder die MyISAM- noch die InnoDB-Engine zu verwenden. MyISAM funktioniert in den meisten Situationen. Wenn Sie jedoch im Vergleich zu Ihren Such- und Auswahlvorgängen eine hohe Anzahl von Aktualisierungen oder Einfügungen haben, erzielen Sie mit der InnoDB-Engine eine bessere Leistung. Um die beste Leistung von InnoDB zu erzielen, müssen Sie die Parameter für Ihren Server anpassen. Andernfalls gibt es keinen Grund, ihn 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 der beste Weg, um eine große Anzahl komplexer Abfragen von Daten durchzuführen, deren Suche auf einer festplattenbasierten Engine ineffizient wäre. 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.

Dieses Bild bietet einen Überblick über einige mit MySQL bereitgestellte Speicher-Engines:

Rajangupta
quelle
1

Vielleicht erhalten Sie hier weitere Informationen: https://en.wikipedia.org/wiki/Database_engine

Ein Datenbankmodul (oder ein Speichermodul) ist die zugrunde liegende Softwarekomponente, mit der ein Datenbankverwaltungssystem (DBMS) Daten aus einer Datenbank erstellt, liest, aktualisiert und löscht (CRUD). 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.

Mogli
quelle