Dieser Artikel ist eine Einführung in die Arbeit mit Datenbankmodulen in MySQL.
Über MySQL-Datenbank-Engines
Datenbank-Engines stellen die zugrunde liegende Funktionalität für MySQL bereit, um mit Daten zu arbeiten und sie zu verarbeiten.
Die beiden gebräuchlichsten und beliebtesten MySQL-Datenbank-Engines sind MyISAM und InnoDB. MyISAM ist die Standard-Engine für MySQL für Versionen vor 5.5.5 und funktioniert in den meisten Szenarien gut. Abhängig von Ihren Anforderungen gibt es jedoch Situationen, in denen ein anderes Datenbankmodul wie InnoDB die bessere Wahl sein kann. InnoDB unterstützt beispielsweise Transaktionen, MyISAM jedoch nicht. InnoDB bietet auch Unterstützung für Fremdschlüssel, MyISAM jedoch nicht.
Wenn Sie Root-Zugriff auf Ihren Server haben, haben Sie die vollständige Kontrolle darüber, wie und wann MySQL die verschiedenen Datenbank-Engines verwendet. Sie können das Standarddatenbankmodul ändern, das Datenbankmodul einer bestimmten Tabelle ändern und vieles mehr.
Ermitteln der Standard-Datenbank-Engine
Um die Standard-Datenbank-Engine für Ihre Installation zu bestimmen, geben Sie den folgenden Befehl an der mysql> -Eingabeaufforderung ein:
SHOW ENGINES;
Eine Liste der unterstützten Engines wird zusammen mit einer kurzen Beschreibung und den unterstützten Funktionen für jede Engine angezeigt. Das Standarddatenbankmodul ist in der Spalte Support als STANDARD markiert.
Ändern der Standard-Datenbank-Engine
Sie können die Standard-Datenbank-Engine für Ihre MySQL-Installation ändern. Danach verwenden alle neuen Tabellen, die Sie erstellen, das neue Datenbankmodul (es sei denn, Sie legen das Modul während der Tabellenerstellung explizit fest).
Um das Standard-Datenbankmodul zu ändern, gehen Sie folgendermaßen vor:
- Verwenden Sie Ihren bevorzugten Texteditor, um die Datenbank zu öffnen.cnf-Datei auf Ihrem Server. Die Lage des Hauses.cnf-Datei hängt von Ihrer Linux-Distribution:
- Auf CentOS und Fedora, die meine.die CNF-Datei befindet sich im Verzeichnis /etc.
- Auf Debian und Ubuntu, die my.die CNF-Datei befindet sich im Verzeichnis /etc/mysql.
- Im my.cnf-Datei, suchen Sie den Abschnitt.
-
Fügen Sie die folgende Zeile im Abschnitt hinzu oder ändern Sie sie. Ersetzen Sie ENGINE durch den Namen der Engine, die Sie als Standard verwenden möchten:
default-storage-engine=ENGINE
Wenn Sie die InnoDB-Datenbank-Engine aktivieren, müssen Sie abhängig von Ihrer Linux-Distribution möglicherweise die folgende Zeile im my deaktivieren.cnf-Datei:
skip-innodb
Fügen Sie dazu einfach ein Rautenzeichen (#) wie folgt an den Zeilenanfang an:
#skip-innodb
- Speichern Sie die Änderungen im my.cnf-Datei, und beenden Sie dann den Texteditor.
-
Starten Sie den MySQL-Server mit dem entsprechenden Befehl für Ihre Linux-Distribution neu:
- Geben Sie für CentOS und Fedora Folgendes ein:
service mysqld restart
-
Geben Sie für Debian und Ubuntu Folgendes ein:
service mysql restart
verwenden Sie für das neue Standarddatenbankmodul die SQL-Anweisung SHOW ENGINES, wie im Abschnitt Ermitteln des Standarddatenbankmoduls beschrieben.
- Geben Sie für CentOS und Fedora Folgendes ein:
Ermitteln der aktuellen Datenbank-Engine einer Tabelle
Um festzustellen, welche Engine eine Datenbanktabelle derzeit verwendet, geben Sie den folgenden Befehl an der mysql> -Eingabeaufforderung ein. Ersetzen Sie database durch den Namen der Datenbank, die Sie überprüfen möchten:
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database';
Dieser Befehl zeigt eine Liste aller Tabellen in der Datenbank zusammen mit der Engine an, die jede Tabelle verwendet.
Datenbankmodul einer Tabelle ändern
Sie können das Datenbankmodul für eine bereits vorhandene Tabelle ändern. Die folgende SQL-Anweisung zeigt beispielsweise, wie eine Tabelle mit dem Namen myTable geändert wird, um die InnoDB-Engine zu verwenden:
ALTER TABLE myTable ENGINE = InnoDB;
Erstellen einer neuen Tabelle mit einer bestimmten Datenbank-Engine
Wenn Sie eine Tabelle in einer Datenbank erstellen, können Sie deren Datenbank-Engine explizit festlegen (andernfalls verwendet MySQL bei der Tabellenerstellung die Standard-Datenbank-Engine). Die folgende SQL-Anweisung zeigt beispielsweise, wie eine Tabelle mit dem Namen myTable erstellt wird, die das MyISAM-Datenbankmodul verwendet:
CREATE TABLE myTable ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), data VARCHAR(20) NOT NULL ) ENGINE MyISAM;
Um eine Tabelle zu erstellen, die das InnoDB-Datenbankmodul verwendet, können Sie die folgende SQL-Anweisung verwenden:
CREATE TABLE myTable ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), data VARCHAR(20) NOT NULL ) ENGINE InnoDB;