当前位置:首页 > SQL > 正文内容

mysql添加索引不锁表,mysql online dll,mysql 添加索引锁表

高老师5年前 (2021-11-06)SQL3698

在加索引的时候100W数据加一个索引导致机器锁表,尤其机器配置只有2G需要时间较长,于是才了解到mysql也支持在线dll,以前只知道tidb支持。

添加索引的方式如下:

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;

LOCK参数的意思

  1. LOCK=NONE:允许并发的查询和DML操作

  2. LOCK=SHARED:允许并发的查询,但阻塞DML操作

  3. LOCK=DEFAULT: 由系统决定,允许尽可能多的并发性(并发查询、DML或两者)。如果省略LOCK子句相当于指定LOCK=DEFAULT

  4. LOCK=EXCLUSIVE:阻塞并发查询和DML操作。

ALGORITHM参数的意思

  1. ALGORITHM=COPY:采用拷表方式进行表变更,与pt-osc/gh-ost类似;

  2. ALGORITHM=INPLACE:仅需要进行引擎层数据改动,不涉及Server层;

然鹅在执行时提示我不支持INPLACE,建议我换为COPY,好吧,我改

然后再次执行时提示我不支持设置为NONE,只能设置DEFAULT,好吧没法玩了。

看了下阿里云的rds文档提示需要先转换为InnoDB引擎才能完全支持mysql的online dll

alter table tab_name engine=innodb;

但是我设置为InnoDB还不是卡很久,看来在建表时就要设计好。本次记录下添加索引不锁表的方法。晚上设置定时任务来执行转换。

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/357.html

分享给朋友:

“mysql添加索引不锁表,mysql online dll,mysql 添加索引锁表” 的相关文章

Mysql子句查询陷阱

Mysql子句查询陷阱

例如我们需要查询商品表中每个分类中商品id最大的记录,并且显示商品价格以下是表结构:id     catename         title &nb...

Left join,​Right join,​Inner join的区别实例讲解

Left join,​Right join,​Inner join的区别实例讲解

Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。Right join:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表...

mysql表视图管理语句

mysql表视图管理语句

1.查看所有表,包括视图表,show  tables;2.查看表结果,包括视图表,desc  表名3.查看建表过程,show   create   table  表名;4.查看建视图过程,show   create   view...

mysql触发器,mysql触发器语法,mysql创建触发器

mysql触发器,mysql触发器语法,mysql创建触发器

    触发器是一种特殊的事务,可以监听到Mysql的(insert/update/delete)的操作并触发相应的(insert/update/delete)操作.    触发器的创建主要有4个要素:(1).监听地点(...

mysql diff,mysqldiff 安装,mysqldiff 用法

mysql diff,mysqldiff 安装,mysqldiff 用法

项目和第三方系统对接,由于第三方开发人员属于兼职,数据库结构不一致的问题只能我来处理。此处文章用本地模拟演示。数据库资料:1号服务器:  账号root 密码root  IP:127.0.0.1  数据库名称:data1 2号服务器...

mysql构建海量表,mysql 海量数据创建

mysql构建海量表,mysql 海量数据创建

海量表,数据量较大,并且每个字段的值具有唯一性。如果你创建的海量表只是数据多,索引是毫无意义的。构建海量时我们要使用存储过程。学习自韩顺平(1).创建一个测试数据库create  database  testdb;set names gbk;use testdb(2).创建dep...