0

适用于 MySQL的Amazon RDS 客户数据导入指南(写于 2009 年)提供了以下提示以减少 MySQL 的加载时间 -

在加载之前创建所有二级索引。这对于熟悉其他数据库的人来说是违反直觉的。添加或修改二级索引会导致 MySQL 创建一个索引更改的新表,将数据从现有表复制到新表,并删除原始表。

但是,从 2010 年起,有几篇文章和 stackoverflow 帖子提供了性能测试,表明加载后创建索引的性能更高。这是从哪里来的,它只是适用于旧版本的 MySQL 吗?如果是这样,请提供确切的详细信息。或者,它仍然适用于特定情况吗?

4

1 回答 1

1

由于二级索引的处理方式,AWS 建议在加载应用于旧 MySQL 版本 (< 5.5) 的数据之前放置二级索引:

来自MySQL 5.5 文档

传统上,创建和删除二级索引涉及复制 InnoDB 表中所有数据的大量开销。InnoDB 插件的快速索引创建功能使 InnoDB 二级索引的 CREATE INDEX 和 DROP INDEX 语句更快。

MySQL 在 5.5 文档中提供了以下建议:

因为索引维护会给许多数据传输操作增加性能开销,所以考虑在没有任何二级索引的情况下执行诸如 ALTER TABLE ... ENGINE=INNODB 或 INSERT INTO ... SELECT * FROM ... 之类的操作,然后再创建索引.

如果您在 AWS 中使用 MySQL 5.5 或更高版本,则可以利用快速快速索引创建功能,显着加快二级索引的创建速度。

快速索引创建是 InnoDB 插件中首次引入的一项功能,现在是 5.5 及更高版本中 MySQL 服务器的一部分,它通过避免完全重写关联表的需要来加速 InnoDB 二级索引的创建。加速也适用于删除二级索引。

于 2013-09-15T06:49:00.800 回答