2012-04-24 4 views
7

Ich verwende derzeit InnoDB für alle meine Datenbanken in MySQL, aber ich habe gerade festgestellt, dass meine Information_schema Datenbank MyISAM für Tabellen verwendet, die nicht MEMORY sind.MySQL Datenbank Engine: MyISAM für information_schema aber InnoDB für andere Datenbanken

Ich bin dabei, ein InnoDB/MyISAM-Problem zu untersuchen. Ich glaube nicht, dass dies der Grund dafür ist, aber ich mache mir Sorgen wegen dieser Vermischung. Die Datenbank wurde ursprünglich mit MyISAM eingerichtet. Später wurde die Datei my.cnf aktualisiert, um die Engine auf InnoDB zurückzusetzen. Ich benutze MySQL 5.5.10.

Welche Probleme könnten auftreten, wenn Ihre information_schema-Datenbank auf MyISAM gesetzt ist, alle anderen Datenbanken jedoch auf MySQL gesetzt sind?


Für die Suche nach Hilfe: Wenn Sie auf diese Frage auf der Suche nach einer Antwort kam, oder Sie wollen mehr wissen, Ihre Standard-Datenbank-Engine, um zu sehen:

show variables; 

zu siehe den Motor Tabellen in einer Datenbank zugeordnet:

show table status; 

Meine my.cnf Einstellungen:

[client] 
default-character-set=utf8 

[mysqld] 
log=/usr/local/var/mysql/mysqld.log 
character-set-server = utf8 
collation-server = utf8_general_ci 
lower_case_table_names=2 
default_storage_engine=InnoDB 

# Performance hacks: 
innodb_flush_method=nosync 
innodb_flush_log_at_trx_commit=0 

Antwort

4

Die Speicher-Engine wird pro Tabelle verwendet. Die Standardspeicher-Engine wird beim Erstellen einer neuen Tabelle verwendet und Sie geben keine Speicher-Engine für die neue Tabelle an.

Die Systemtabellen wären MyISAM, unabhängig davon, wofür Sie die Standardspeicher-Engine festgelegt haben.

Von MySQL documentation:

Wichtige

nicht umwandeln MySQL-Systemtabellen in der MySQL-Datenbank (wie Benutzer oder Host) an die InnoDB-Typ. Dies ist eine nicht unterstützte Operation. Die Systemtabellen müssen immer vom Typ MyISAM sein.

Wenn Sie die information_schema-Tabellen nicht direkt abfragen, besteht kein Grund zur Vermischung der Typen.

Verwandte Themen