2012-04-24 107 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表,则不需要考虑混合类型。

相关问题