gpt4 book ai didi

mysql - 在 MySQL 5.6 "Alter Table Add Columns"中不允许 DML 并发

转载 作者:可可西里 更新时间:2023-11-01 07:35:01 25 4
gpt4 key购买 nike

MySQL 5.6 声称 DDL 操作将以最大可能的并发运行。 http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html

“允许并发 DML?”列显示哪些操作可以完全在线执行;首选值为"is"。您可以指定 LOCK=NONE 以断言在 DDL 期间允许完全并发,但 MySQL 会在可能时自动允许此级别的并发。当允许并发 DML 时,也始终允许并发查询。

但是我刚刚尝试了一个“ALTER TABLE ADD COLUMN...”语句,并且在这个操作过程中表似乎被锁定了。当我重新运行该语句并附加“,ALGORITHM=inplace, LOCK=none”时,它花费了更长的时间,但该表仍然可以使用。我认为 MySQL 会为特定语句使用最高级别的并发,那么为什么我必须明确指定它们?

最佳答案

在线 DDL 允许并发 DML 的事实并不一定意味着默认情况下它会捕获一切机会这样做。

关于“尽可能允许这种级别的并发”的语言有点难以解释。您可能会假设 MySQL 总是 在可能的情况下使用 inplace 算法,但反过来想:它实际上意味着它不允许在不可能的情况下使用 inplace 算法。如果就地 DDL 是可能的,它会允许它,但实际上不会使用该算法,除非您请求它。

您自己观察到在线 DDL 速度较慢。使用更快的方法不是一个合理的默认设置吗(因为大多数人都希望事情变得更快)?毕竟,表可能足够小,非就地 ALTER 将花费不到 1 秒的时间,因此不会造成太大的中断。在所有可能的情况下启用就地 ALTER 将使它们花费更长的时间默认

关于mysql - 在 MySQL 5.6 "Alter Table Add Columns"中不允许 DML 并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com