我目前正在将我的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
答案 0 :(得分:4)
使用的存储引擎基于每个表。创建新表时使用默认存储引擎,而您没有为新表指定存储引擎。
无论您将默认存储引擎设置为什么,系统表都将是MyISAM。
重要
不要在mysql数据库中转换MySQL系统表(例如用户 或托管)到InnoDB类型。这是一项不受支持的操作。该 系统表必须始终是MyISAM类型。
如果您没有直接查询information_schema表,则无需混淆类型。