从 MyISAM 转换为 InnoDB 有什么问题吗?

And*_*rew 11 mysql innodb myisam

我已准备好从 MyISAM 迁移到 InnoDB,但想知道是否有要查找的完整列表?例如,我没有看到任何列表提到DISABLE KEYS在 InnoDB 表上运行会抛出警告,除了ALTER TABLE. 这是我在转换之前需要了解的那种事情。我以为我可以接受我的查询,但显然不是。

Rol*_*DBA 7

这里有一些问题

内存使用情况

我的ISAM

数据库

  • 缓存数据页和索引页。
  • MySQL 5.5 之前的一个缓冲池和一个大小
  • 从 MySQL 5.5 开始的 1 个或多个缓冲池

以下是我之前编写和发布的一些关于如何为 MyISAM Ke​​y Cache 和 InnoDB Buffer Pool 选择合适大小的查询

全文索引

我的ISAM

  • 支持全文索引

数据库

  • 从 MySQL 5.6 开始,是的,但仍处于测试阶段(更新:MySQL 5.6 存在并具有 FULLTEXT 索引。如果您在 MySQL 5.6 中使用 FULLTEXT 索引,请确保您使用的是InnoDB 特定的 FULLTEXT 选项
  • 在 MySQL 5.6 之前,这意味着您不能将 MyISAM 转换为 InnoDB。

MySQL 5.5 及之后

要查找哪些 MyISAM 表具有 FULLTEXT 索引,请运行以下查询:

select tbl.table_schema,tbl.table_name from
(
    select table_schema,table_name
    from information_schema.tables
    where engine='MyISAM'
    and table_schema NOT IN ('information_schema','mysql')
) tbl
INNER JOIN
(
    select table_schema,table_name
    from information_schema.statistics
    where index_type='FULLTEXT'
) ndx
USING (table_schema,table_name);
Run Code Online (Sandbox Code Playgroud)

在升级到 MySQL 5.6 之前,此查询产生的任何内容都无法转换为 InnoDB。

优化表

我的ISAM

  • MyISAM 表缩小了
  • ANALYZE TABLE对所有索引运行索引统计信息

数据库