修改表结构

本文详细介绍了MySQL中ALTER TABLE语句用于修改表结构的各种操作,包括添加或删除列、创建索引等。重点讨论了在线DDL操作,特别是如何在不阻塞DML操作的情况下进行表结构修改,以及不同操作对表的影响,如就地执行和复制表。通过实例展示了添加新列、修改列类型等操作,并提到了参考MySQL官方文档以获取更多信息。
摘要由CSDN通过智能技术生成

ALTER TABLE语句用于改变表的结构。例如,可以添加或删除列、创建或销毁索引、更改现有列的类
型,或者对列或这个表重命名。
在执行某些修改(alter)操作时(如更改列的数据类型、添加SPATIAL INDEX、删除主键、转换字符
集、添加/删除加密等),对表的DML操作会被阻塞。如果表很大,则需要花费更多的时间来执行alter
操作,并且在此期间应用程序无法访问表,这是无法接受的。在这种情况下,采用pt-online-schema更改(change)就很有用,它允许使用DML语句。
修改(alter)表的操作有以下两种算法
In-place(默认):不需要复制整个表的数据
Copy:将数据复制到一个临时的磁盘文件中并重新命名
只有特定的alter操作可以在本地完成。在线DDL操作的性能很大程度上取决于该操作是否能就地执行,
或者需要复制和重建整个表。具体信息可以参考: https://dev.mysql.com/doc/refman/8.0/en/innodb
-online-ddl-operations.html 以查看哪些操作可以就地执行,以及为了避免表复制操作有哪些要求。
没有就地(in-place)执行的ALTER TABLE操作会创建原始表的临时副本。MySQL等待修改表的其他操
作完成后,然后继续运行。它将修改合并到这个副本中,删除原始表,并重命名新的表。当ALTER
TABLE正在执行时,原始表可供其他会话读。在ALTER TABLE操作开始之后,对表开始做的更新和写操
作将停止,直到新表准备就绪,然后这些更新和写操作会被自动重定向到这个没有发生过任何更新失败<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值