我目前正在MySQL中的所有数据库中使用InnoDB,但是我刚刚注意到我的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
使用的存储引擎基于每个表。创建新表时使用默认存储引擎,并且您没有为新表指定存储引擎。
无论您将默认存储引擎设置为什么,系统表都将是MyISAM。
来自 MySQL 文档:
重要
不要转换 mysql 数据库中的 MySQL 系统表(例如用户 或主机)到 InnoDB 类型。这是不受支持的操作。这 系统表必须始终为 MyISAM 类型。
如果不直接查询information_schema表,则无需担心混合类型。