MySQL数据库引擎:information_schema使用MyISAM,其他数据库使用InnoDB。

8

我目前在MySQL中使用InnoDB作为我的所有数据库,但是我刚刚发现我的information_schema数据库对于不是MEMORY的表使用MyISAM。

我正在调查一个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个回答

4
存储引擎是按表格使用的。创建新表时,如果没有指定存储引擎,则使用默认存储引擎。
无论您将默认存储引擎设置为什么,系统表都将是MyISAM。
来自MySQL文档
重要提示: 不要将mysql数据库中的MySQL系统表(例如用户或主机)转换为InnoDB类型。这是一项不受支持的操作。系统表必须始终是MyISAM类型。
如果您没有直接查询information_schema表,则不必担心混合类型问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接