主键索引维护

1、新增主键索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。
ALTER TABLE tb001
ADD PRIMARY KEY (ID),
ALGORITHM = INPLACE;
Query OK, 0 rows affected (22.13 sec)
Records: 0  Duplicates: 0  Warnings: 02、官网称如果创建主键索引时需要隐式转换列为NOT NULL则不能使用INPLACE方式(ALGORITHM=INPLACE is not permitted under certain conditions if columns have to be converted to NOT NULL)。
但在MySQL 5.7.19版本中测试发现在允许为NULL的列上创建主键,采用REBUILD INPLACE方式的Online DDL,操作期间允许表并发读写。

2、删除主键索引

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE tb001
DROP PRIMARY KEY,
ALGORITHM = INPLACE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Dropping a primary key is not allowed without also adding a new primary key. Try ALGORITHM=COPY.ALTER TABLE tb001
DROP PRIMARY KEY,
ALGORITHM=COPY;
Query OK, 800001 rows affected (20.01 sec)
Records: 800001  Duplicates: 0  Warnings: 0

3、删除并新增主键索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。
ALTER TABLE TB001
DROP PRIMARY KEY,
ADD PRIMARY KEY(C1),
ALGORITHM=INPLACE,
LOCK=NONE;
Query OK, 0 rows affected (22.57 sec)
Records: 0  Duplicates: 0  Warnings: 0

4、修改主键列类型

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE TB001
CHANGE C1 C1 BIGINT NOT NULL,
ALGORITHM=INPLACE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.ALTER TABLE TB001
CHANGE C1 C1 BIGINT NOT NULL,
ALGORITHM=COPY, LOCK=NONE;
ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.ALTER TABLE TB001
CHANGE C1 C1 BIGINT NOT NULL,
ALGORITHM=COPY, LOCK=SHARED;
Query OK, 799998 rows affected (20.49 sec)
Records: 799998  Duplicates: 0  Warnings: 0

二级索引维护

1、新增二级索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。
ALTER TABLE TB001 ADD INDEX IDX_C1(C1);
Query OK, 0 rows affected (10.53 sec)
Records: 0  Duplicates: 0  Warnings: 0

2、删除二级索引

## 仅需元数据修改操作,操作时间极短。
ALTER TABLE TB001 DROP INDEX IDX_C1;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

3、修改二级索引名

## 仅需元数据修改操作,操作时间极短。
ALTER TABLE TB001
RENAME INDEX IDX_C1 TO IDX_C1_NEW,
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

4、修改二级索引列类型

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE TB001 CHANGE C1 C1 INT;
Query OK, 800000 rows affected (25.03 sec)
Records: 800000  Duplicates: 0  Warnings: 0ALTER TABLE TB001
CHANGE C1 C1 BIGINT,
ALGORITHM = INPLACE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

自增属性修改

1、修改普通主键列为自增主键列

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE TB001 MODIFY ID BIGINT AUTO_INCREMENT;
Query OK, 800000 rows affected (26.15 sec)
Records: 800000  Duplicates: 0  Warnings: 0

2、修改自增主键列为普通主键列

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE TB001 MODIFY ID BIGINT NOT NULL;
Query OK, 800000 rows affected (28.27 sec)
Records: 800000  Duplicates: 0  Warnings: 0

3、修改表自增开始值

## 仅需要修改元数据信息,操作时间极短。
ALTER TABLE TB001 AUTO_INCREMENT=800020;
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

列属性修改

1、新增列

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。
## 无论是新增可为NULL的列还是NOT NULL的列
ALTER TABLE TB001
ADD C2 INT NOT NULL DEFAULT 99999,
ALGORITHM=INPLACE, LOCK=NONE;Query OK, 0 rows affected (33.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

2、删除列

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。
ALTER TABLE TB001
DROP COLUMN C5,
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (33.57 sec)
Records: 0  Duplicates: 0  Warnings: 0

3、修改列数据类型(INT至BIGINT)

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE TB001
CHANGE C5 C5 BIGINT NULL,
ALGORITHM=INPLACE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.ALTER TABLE TB001
CHANGE C5 C5 BIGINT NULL,
ALGORITHM=COPY, LOCK=SHARED;Query OK, 0 rows affected (29.63 sec)
Records: 0  Duplicates: 0  Warnings: 0

4、修改列类型显示长度(INT(10)至INT(8)或INT(8)至INT(10))

## 无论使用CHANGE命令还是MODIFY命令,都是修改元数据,操作时间极短。
ALTER TABLE tb001
MODIFY C2 INT(8),
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0ALTER TABLE tb001
CHANGE C2 C2 INT(8) DEFAULT NULL,
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

5、修改列类型扩展存储长度(VARCHAR(300)至VARCHAR(500))

## 无论使用CHANGE命令还是MODIFY命令,都是修改元数据,操作时间极短。
ALTER TABLE tb001
CHANGE C3 C3 varchar(500) DEFAULT NULL,
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0ALTER TABLE tb001
MODIFY COLUMN C3 VARCHAR(500),
ALGORITHM=INPLACE, LOCK=NONE;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0

6、修改列类型扩展存储长度(VARCHAR(10)至VARCHAR(100))

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE tb001
MODIFY COLUMN C3 VARCHAR(100),
ALGORITHM=INPLACE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.ALTER TABLE tb001
MODIFY COLUMN C3 VARCHAR(100),
ALGORITHM=COPY, LOCK=SHARED;
Query OK, 0 rows affected (33.57 sec)
Records: 0  Duplicates: 0  Warnings: 0

7、修改列类型收缩存储长度(VARCHAR(500)至VARCHAR(300))

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。
ALTER TABLE tb001
CHANGE C3 C3 VARCHAR(300) DEFAULT NULL,
ALGORITHM=INPLACE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.ALTER TABLE tb001
MODIFY COLUMN C3 VARCHAR(300),
ALGORITHM=INPLACE, LOCK=NONE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.ALTER TABLE tb001
MODIFY COLUMN C3 VARCHAR(300),
ALGORITHM=COPY, LOCK=SHARED;
Query OK, 800009 rows affected (27.28 sec)
Records: 800009  Duplicates: 0  Warnings: 0

8、修改修改列注释

## 仅需修改元数据,操作时间极短
ALTER TABLE tb001
MODIFY  COLUMN C3` varchar(300) DEFAULT NULL COMMENT '测试1';
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0ALTER TABLE tb001
CHANGE C3 C3 varchar(300) DEFAULT NULL COMMENT '测试2';
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

MySQL 5.7版本下DDL操作

转载于:https://www.cnblogs.com/gaogao67/p/11177557.html

MySQL DDL--MySQL 5.7版本Online DDL操作相关推荐

  1. MySQL基础--(2) [SQL(结构化查询语言), DDL(数据定义语言)]

    目录 Sql(结构化查询语言) sql的概念以及特点 DDL(数据定义语言) 创建,删除,修改数据库. 数据库存储数据的特点 数据库表 数据库表中数据的数据类型 数据库表中数据的约束 创建表 设置修改 ...

  2. MySQL基础(mysql下载,图形化界面工具,DDL)

    目录 1.Mysql下载安装启动 1.下载 2.安装 3.配置 4. 启动mysql 5.客户端连接 2.图形化界面工具 1.安装 2. 使用 3.SQL 1.SQL分类 1.DDL 1.数据库操作 ...

  3. .tar.gz mysql 安装_mysql tar.gz 版本 linux系统的安装-Go语言中文社区

    mysql下载地址: https://dev.mysql.com/downloads/mysql/ 1.  上传下载的tar.gz文件发送到linux 上传的路径: /usr/local/mysql/ ...

  4. mysql cluster 安装NDB二进制版本

    2019独角兽企业重金招聘Python工程师标准>>> mysql cluster 基于NDB CLUSTER存储引擎的完整的分布式数据库系统.MYSQL CLUSTER是一个sha ...

  5. 1、MySQL 8.0.20最新版本在Linux上安装

    文章目录 1.下载安装包 2.解压安装 3.拷贝到 /usr/local并重命名为mysql 4.删除/opt目录下解压的文件(也可以保留)只留下安装包 5.创建mysql用户组和用户并修改权限 6. ...

  6. Mysql 5.7.10以上版本安装大坑

    mysql解压缩版的配置已经方便无比了,但是也正是由于官方的不断优化,导致传统的套路一次次被修改.也让像我这样的萌新撞了个大墙. [注:本篇博客适用mysql5.7.10~5.7.15,如果版本已太过 ...

  7. MySQL 的发展历史和版本分支:

    时间 里程碑 1996 年 MySQL 1.0 发布.它的历史可以追溯到1979 年,作者Monty 用BASIC 设计的一个报表工具. 1996 年10 月 3.11.1 发布.MySQL 没有2. ...

  8. mysql客户端版本太低_windows一机多装mysql,5.5低版本+5.8高版本

    安装第一个mysql,压缩版或者安装版,过程省略,目录如下: 运行中输入"regedit" 进入后,找到      HKEY_LOCAL_MACHINE\SYSTEM\Curren ...

  9. mysql 5.6.4以上版本innodb支持全文索引的测试

    对于mysql 5.6.4以上版本innodb支持全文索引的测试 在mysql官网,innodb引擎在5.6.4版本提供了对全文索引的支持,笔者对此做了测试,发现对中文全文检索的支持依然不理想,但却确 ...

最新文章

  1. Windows API一日一练(56)SetEndOfFile和GetFileSizeEx函数
  2. it程序员刷题 面试 中文网站收集
  3. abap 选择屏幕事件AT SELECTION-SCREEN
  4. C++ 面向对象(二)多态 : 虚函数、多态原理、抽象类、虚函数表、继承与虚函数表
  5. 世界各地奇葩讨债方法,竟百发百中
  6. 【专升本计算机】甘肃省专升本计算机C语言经典程序案例代码合集(持续更新)
  7. sql语句中的in用法示例_PHP中的循环语句和示例
  8. Java 随心笔记7
  9. 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
  10. 在Java中实现在线语音识别
  11. linux内存管理初始化
  12. 如何从12306网站下载自己喜欢的手机铃声
  13. 基于导频的信道估计实现
  14. 计算机课题推荐人意见,课题申请推荐人意见怎么写
  15. 量子计算机解泊松方程,学界 | 从泊松方程的解法,聊到泊松图像融合
  16. 2021-6-10-今日收获
  17. 批处理---findstr命令详解
  18. 李希贵:教育改革最大的阻力来自我们内心
  19. Android CameraServer:Disconnect
  20. 程序员真的是一个吃青春饭的行业吗?

热门文章

  1. delphi oracle新建用户,Delphi 中如何用另外一个用户的身份来运行一人程序
  2. shell命令卸载mysql_centos8中的MySQL卸载和安装
  3. 网络营销专员浅析如何以低成本高获取实现网络营销?
  4. 网站功能页面构建有何技巧?
  5. java jackson json_java – 使用Jackson从JSON获取单个字段
  6. linux上热编译react,如何使用react进行热加载
  7. mysql总结 博客园_mysql总结
  8. linux哪些分区用固态硬盘,关于linux:简单聊聊固态硬盘的物理结构
  9. TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)...
  10. python 写创建和追加一个文件