online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展:

很多alter table的操作绕开了 table copying,支持DML并发操作。

一、online ddl的支持测试:

1、主键的增删

主键添加:

支持online ddl,加主键过程中支持 并发的DML

主键删除:

不支持online ddl,删除主键过程需要copy table,导致DML被阻塞

2、索引的增删

1)普通索引

5.5使用新的逻辑(fast index creation),不再copy表,(参数old_alter_table),加快的索引的创建和删除,

但是会阻塞DML,可以select

5.6中创建和删除索引不再阻塞dml

2)unique索引

同上

3、字段的增删改

新增:

(alter table test add hehe2 int default 100)

5.5阻塞 DML,支持select

5.6支持并发DML

删除:

(alter table test drop hehe2)

5.5阻塞 DML,支持select

5.6支持并发DML

修改:

只改字段名:

(alter table test change hehe2 hehe20 int default '100')

5.5阻塞 DML,支持select

5.6支持online ddl,并发DML

修改字段类型:

(alter table test change hehe20 hehe2 varchar(100) default '100')

5.5阻塞 DML,支持select

5.6不再支持online ddl

二、新引入语法:

在5.6中,alter table增加了新的语法:

ALGORITHM [=] {DEFAULT|INPLACE|COPY}

LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}

ALGORITHM:

INPLACE: 不copy table

COPY:     copy table

DEFAULT:

LOCK:

DEFAULT:    mysql自己选择锁定资源最少的方式

NONE:      支持select和DML

SHARED:   支持select,不支持DML

EXCLUSIVE:不支持select,不支持DML

可以借用这个新增语法测试是否alter table语句支持online DDL:

新建一个表结构一样的表,存储少量的数据:

root:3306:popo>alter table test change hehe2 hehe20 int default '100' ,LOCK=NONE;

ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: Cannot change column type INPLACE. Try LOCK=SHARED.

根据提示,这个字段类型修改的alter table不支持并发的DML操作

root:3306:popo>alter table test change hehe2 hehe20 int default 100,  ALGORITHM=inplace;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

同样 这个alter table 也需要copy table操作。

三、online ddl相关参数和原理:

innodb_online_alter_log_max_size

online ddl的原理是,mysql把在ddl时间内的所有的 插入,更新和删除操作记录到一个日志文件,

然后再把这些增量数据应用到相应的表上(等表上的事务完全释放后),这个临时日志文件的上限值由

innodb_online_alter_log_max_size指定,每次扩展innodb_sort_buffer_size的大小 该参数如果太小,

有可能导致DDL失败,这期间所有的未提交的并发DML操作都会回滚;但是如果太大

会可能会导致后DDL操作最后锁定表的时间更长(锁定表,应用日志到表上)。

每一个变化的索引或者表都会分配一个。

mysql 5.6 online ddl_mysql5.6的online ddl功能测试相关推荐

  1. MySQL学习记录 (三) ----- SQL数据定义语句(DDL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  2. mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试

    online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展:很多alter table的操作绕开了 table copying, ...

  3. java连接mysql执行ddl_dljd_(007_009)_jdbc执行DQL/DML/DDL语句

    packageedu.aeon.jdbc;importjava.sql.Connection;importjava.sql.Driver;importjava.sql.DriverManager;im ...

  4. MYSQL(二) SQL通用语法及分类及DDL(对数据库和表操作)的使用

    一SQL通用语法 1)SQL语句可以单行或多行书写,以分号结尾. 2)SQL语句可以使用空格/缩进来增强语句的可读性 3)MYSQL数据库的SQL不区分大小写,关键字建议使用大写 4)注释: 单行注释 ...

  5. 学习笔记(03):MySQL数据库从入门到搞定实战-DDL之数据表

    立即学习:https://edu.csdn.net/course/play/27328/362519?utm_source=blogtoedu ddl之数据表 mysql存储引擎 1.查看mysql支 ...

  6. 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat

    文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...

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

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

  8. Mysql(Centos7.9)2022最新学习(二):DDL语句

    1)DDl :Data defination language(数据定义语言) 1.1)show databases:                                         ...

  9. MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...

    为什么80%的码农都做不了架构师?>>>    文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...

最新文章

  1. 为什么匿名内部类参数必须为final类型
  2. 【尚硅谷】大厂必备技术之JUC并发编程——笔记总结
  3. Ioc的推荐实现方式
  4. SAP BSP应用有状态和无状态行为差异比较
  5. 航海学校高级课程任务讲义
  6. 2013年6月和12月CISA考试报名,认证,CPE维持和备考要点
  7. TCP之1460MSS和1448负载
  8. 数据集:不同地区居民消费数据
  9. android切换输入法工具类
  10. 推荐系统—基于用户的协同过滤算法简单实现
  11. Mysql workbench画ER图
  12. 织梦联动添加三级分类后无法添加二级分类的解决方案
  13. 一次简单的 HTTP 调用,为什么时延这么大?
  14. python二维码加动态图_用python自制个性二维码(设置带LOGO的二维码带动图)
  15. Tuxera ntfs读写插件工具v2022版本 支持macOS15系统
  16. 单片机中的定时器计算
  17. 【VScode报错】> ools-1.1.3\debugAdapters\bin\WindowsDebugLa‘--stdout=Microsoft-MIEngine-Out-aguzdga1-npu
  18. Flash cs3无法编译(无法影片预览)
  19. 搭建gataway鉴权流程
  20. Python学习笔记:第二站 七十二变

热门文章

  1. pandas使用nlargest函数返回特定数据列中前N个最大值(搜寻最大的n个元素)、pandas使用nlargest函数返回特定数据列中前N个最大值所对应的数据行
  2. R语言ggplot2可视化多行文本轴标签、轴标签带下标、轴标签数学公式实战
  3. R语言ggplot2可视化改变线图(line plot)中线条的色彩实战
  4. R语言abs函数计算数值数据对象的绝对值实战
  5. OLTP与OLAP是什么?OLTP与OLAP的主要区别是什么?
  6. 自动编码(Autoencoder)器异常检测(outlier detection)实战
  7. vscode 显示最近打开的folder_vscode报错Module #x27;pygal#x27; has no #x27;Bar#x27; Member...
  8. ISLR_StatisticalLearning
  9. 混合和可扩展的纠错算法,用于长读的插入缺失和替换错误
  10. 目标检测---Segmentation Is All You Need