首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有表锁定的大型MariaDB生产数据库中创建索引

在没有表锁定的大型MariaDB生产数据库中创建索引
EN

Stack Overflow用户
提问于 2020-11-12 05:21:21
回答 1查看 599关注 0票数 1

我有一个包含202M记录的表,我需要在其中添加几个索引,但是如果在MariaDB 10.3中不加锁就可以做到这一点,我在任何地方都找不到它(或者我可能不懂行话)。

我发现this post在MySQL 5.6+中是可行的,但我的google foo在MariaDB上没有得到任何信息。

我尝试使用pt-online-schema-change,但是因为我没有任何索引(甚至没有主索引),所以不能这样做。

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 18:41:10

使用ALTER ONLINE TABLE可以做到这一点。

ALTER ONLINE TABLE等同于LOCK=NONE。因此,ALTER ONLINE TABLE语句可用于确保ALTER TABLE操作允许所有并发DML。

进一步阅读,添加主键是一个“复制”操作,因为DB引擎需要将整个表复制到新文件中,但在一个就地操作中添加其他索引。

InnoDB支持将主键添加到算法设置为INPLACE的表中。表被重新构建,这意味着所有数据都得到了实质上的重新组织,索引也被重新构建。因此,该操作相当昂贵。该操作支持非锁定策略。可以通过将LOCK子句设置为NONE来显式选择此策略。当使用此策略时,允许所有并发DML。

不会重新构建该表。该操作支持非锁定策略。

有关更多信息,请访问MariaDB documentation

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

https://stackoverflow.com/questions/64794302

复制
相关文章

相似问题

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