8

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

1 回答 1

4

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

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

来自MySQL 文档

重要的

不要将mysql数据库中的MySQL系统表(如user或host)转换为InnoDB类型。这是不受支持的操作。系统表必须始终是 MyISAM 类型。

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

于 2012-04-24T20:06:04.677 回答