Mysql不锁表增加字段和索引

本文介绍了在MySQL中如何在不锁定表的情况下添加字段和索引,利用在线DDL特性实现数据操作。同时,解释了DDL、DML、DCL的区别:DDL用于创建、修改和删除数据库对象,DML用于插入、删除和更新记录,而DCL则关注数据控制和权限管理。文中还提供了一个案例作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql不锁表增加字段和索引方法

参考链接:

Mysql不锁表增加字段和索引方法

Mysql online DDL特性

mysql百万数据插入脚本

在线修改大表结构pt-online-schema-change

#INPLACE:执行DDL的同时允许DML操作
#NONE:不添加所,即允许查询操作,也支持数据库变更操作,该模式下并发最好
ALTER TABLE `member` ADD `user_from` smallint(1) NOT NULL, ALGORITHM=INPLACE, LOCK=NONE
DDL、DML、DCL的区别
  • DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,Drop可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。

  • DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。

    DML的主要语句(操作)

    Insert语句:向数据表张插入一条记录。

    Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。

    Update语句:用于修改已存在表中的记录的内容。

    DML的操作对象——记录

  • DCL(Data Control Language 数据控制语句)的操作是数据库对象的权限,这些操作的确定使数据更加的安全。

    DCL的主要语句(操作)

    Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。

    Revoke语句:可以废除某用户或某组或所有用户访问权限

    DCL的操作对象(用户)

    此时的用户指的是数据库用户。

案例:
#120万行记录,执行耗时15秒,连接数没有变化,但是IOPS从500上升到1100,几乎翻倍
ALTER TABLE `member` ADD `user_from` smallint(1) NOT NULL, ALGORITHM=INPLACE, LOCK=NONE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值