【问题标题】:MySQL database engine: MyISAM for information_schema but InnoDB for other databasesMySQL 数据库引擎:MyISAM 用于 information_schema,而 InnoDB 用于其他数据库
【发布时间】:2012-05-05 11:47:55
【问题描述】:

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

【问题讨论】:

    标签: mysql innodb myisam information-schema


    【解决方案1】:

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

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

    来自MySQL documentation

    重要

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 2012-05-04
      • 1970-01-01
      • 2011-04-04
      • 2015-09-26
      • 2012-04-15
      • 1970-01-01
      • 2011-03-22
      • 2016-04-20
      相关资源
      最近更新 更多