暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片
MySQL Online DDL开发操作手册.pdf
1221
30页
56次
2024-06-18
5墨值下载
MySQL Online DDL 开发操作指引
赵金海
一、概
1. 支持的算法说明
MySQL alter table 的操作支持三种算法,即 algorithm = default | instant | inplace | copy。
COPY:对原始表的副本执行操作,并将表数据从原始表逐行复制到新表。不允许并发 DML,存在表锁。
INPLACE:操作避免复制表数据,但可以在适当位置重建表。在操作的准备和执行阶段可以简短地获取表上的独占元数据锁。一般情况下,
支持并发 DML。
INSTANT操作只修改数据字典中的元数据。在准备和执行期间,不会在表上获取任何独占元数据锁,并且表数据不受影响,从而使操作立
即进行,同时允许并发 DML。使用 INSTANT lock 只能指定为 default 默认值,而不能指定为互斥锁或共享锁。INSTANT 不需要重建表
拷贝表,不需要加表锁,对于磁盘空间没有影响。(Instant 算法在 MySQL 8.0.12 中引入)
DDL 操作的性能在很大程度上取决于是否重建表。
对于修改表数据的 DDL 操作,查看命令完成后显示的“受影响行”值就可以确定 DDL 操作是就地执行更改还是执行表 COPY(或者说重建)
例如:
# 1.更改列的默认值(快速,不影响表数据)
Query OK, 0 rows affected (0.07 sec)
# 2.添加索引 (花费一些时间, 但是 "0 rows affected" 表示表未被 copy):
Query OK, 0 rows affected (21.42 sec)
# 3.更改列的数据类型(需要大量时间,需要重建表的所有行):
Query OK, 1671168 rows affected (1 min 35.54 sec)
2. 关于 ALGORITHM LOCK 子句的说
1> LOCK 子句可用于 INPLACE 执行的操作,可用于操作期间对表的并发访问程度。其中 LOCK=DEFAULT 仅支持 INSTANT 操作。
2> 关于 ALGORITHM 子句与 LOCK 子句:
ALTER TABLE 选择 inplace 模式时,为避免操作期间无法读取、写入,可指定 lock 子句控制,例如 LOCK=NONE(permit reads and
of 30
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文档被以下合辑收录

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜