MySQL数据库引擎:MyISAM用于information_schema,但InnoDB用于其他数据库

时间:2012-04-24 19:30:15

标签: mysql innodb myisam information-schema

我目前正在将我的InnoDB用于MySQL中的所有数据库,但是我注意到我的information_schema数据库使用MyISAM来处理非MEMORY的表。

我正在调查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

1 个答案:

答案 0 :(得分:4)

使用的存储引擎基于每个表。创建新表时使用默认存储引擎,而您没有为新表指定存储引擎。

无论您将默认存储引擎设置为什么,系统表都将是MyISAM。

来自MySQL documentation

  

重要

     

不要在mysql数据库中转换MySQL系统表(例如用户   或托管)到InnoDB类型。这是一项不受支持的操作。该   系统表必须始终是MyISAM类型。

如果您没有直接查询information_schema表,则无需混淆类型。