首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中创建索引而不创建磁盘上的临时文件

在MySQL中创建索引而不创建磁盘上的临时文件
EN

Stack Overflow用户
提问于 2018-04-01 12:23:14
回答 1查看 772关注 0票数 1

我试图在大型MySQL表(每个表50-100GB)上创建索引。

我注意到,在启动ALTER语句以创建新索引时,MySQL为该表创建几个临时文件,将整个表数据(.MYD文件)和索引(.MYI文件)复制到新文件中,可能相应地修改它们,最后将它们与原始文件交换。这个过程需要花费大量的时间,因为它需要将大量数据复制到这些临时文件中。

假设我不关心锁定表/停机/任何其他与生产有关的限制,那么有更快的方法吗?有没有办法告诉MySQL,不要创建那些大型临时文件,而是尽快创建索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-01 16:56:25

.MYD和.MYI文件是MyISAM数据文件。如果可以避免使用MyISAM存储引擎,则不应该使用它。对于大多数查询,它比InnoDB慢,而且MyISAM有design defects with respect to data integrity and atomicity。MyISAM没有得到改进,而是被逐步淘汰了。

如果您使用InnoDB,则可以利用联机DDL的改进。

代码语言:javascript
复制
CREATE INDEX MyIndex ON MyTable (column1) ALGORITHM=INPLACE;

请参阅https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html

MyISAM不支持联机DDL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49598010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档