2012-04-24 64 views
7

我目前對MySQL中的所有數據庫使用InnoDB,但是我只注意到我的information_schema數據庫使用MyISAM來處理不是MEMORY的表。MySQL數據庫引擎:MyISAM用於information_schema,但InnoDB用於其他數據庫

我正在調查InnoDB/MyISAM問題。雖然我不認爲這是它的原因,但我擔心這種混合。數據庫最初是使用MyISAM設置的。稍後,my.cnf文件被更新以將引擎重置爲InnoDB。我正在使用MySQL 5.5.10。

將information_schema數據庫設置爲MyISAM,但所有其他數據庫設置爲MySQL可能會發生什麼問題?


對於那些尋求幫助: 如果您在尋求答案,碰到這個問題就來了,或者你想了解更多,就看您的默認數據庫引擎:

show variables; 

要看到引擎分配到數據庫中的表格:

show table status; 

我的my.cnf設置:

[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 

回答

4

使用的存儲引擎基於每個表格。創建新表時使用默認存儲引擎,並且不爲新表指定存儲引擎。

無論您將默認存儲引擎設置爲什麼,系統表都是MyISAM。

MySQL documentation

重要

不要轉換系統的MySQL在MySQL數據庫中的表(如用戶 或主機)InnoDB的類型。這是一個不受支持的操作。 系統表必須始終爲MyISAM類型。

如果您不直接查詢information_schema表,則不需要考慮混合類型。

相關問題