繁体   English   中英

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

[英]MySQL database engine: MyISAM for information_schema but InnoDB for other databases

我目前正在对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

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

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

MySQL文档

重要

请勿将mysql数据库(例如用户或主机)中的MySQL系统表转换为InnoDB类型。 这是不受支持的操作。 系统表必须始终为MyISAM类型。

如果您不是直接查询information_schema表,则无需担心混合类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM