我有一个包含202M记录的表,我需要在其中添加几个索引,但是如果在MariaDB 10.3中不加锁就可以做到这一点,我在任何地方都找不到它(或者我可能不懂行话)。
我发现this post在MySQL 5.6+中是可行的,但我的google foo在MariaDB上没有得到任何信息。
我尝试使用pt-online-schema-change,但是因为我没有任何索引(甚至没有主索引),所以不能这样做。
发布于 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。
https://stackoverflow.com/questions/64794302
复制相似问题