mysql 5.6 online ddl_mysql5.6的online ddl功能测试
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功能测试相关推荐
- MySQL学习记录 (三) ----- SQL数据定义语句(DDL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- 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, ...
- java连接mysql执行ddl_dljd_(007_009)_jdbc执行DQL/DML/DDL语句
packageedu.aeon.jdbc;importjava.sql.Connection;importjava.sql.Driver;importjava.sql.DriverManager;im ...
- MYSQL(二) SQL通用语法及分类及DDL(对数据库和表操作)的使用
一SQL通用语法 1)SQL语句可以单行或多行书写,以分号结尾. 2)SQL语句可以使用空格/缩进来增强语句的可读性 3)MYSQL数据库的SQL不区分大小写,关键字建议使用大写 4)注释: 单行注释 ...
- 学习笔记(03):MySQL数据库从入门到搞定实战-DDL之数据表
立即学习:https://edu.csdn.net/course/play/27328/362519?utm_source=blogtoedu ddl之数据表 mysql存储引擎 1.查看mysql支 ...
- 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. ...
- MySQL基础(mysql下载,图形化界面工具,DDL)
目录 1.Mysql下载安装启动 1.下载 2.安装 3.配置 4. 启动mysql 5.客户端连接 2.图形化界面工具 1.安装 2. 使用 3.SQL 1.SQL分类 1.DDL 1.数据库操作 ...
- Mysql(Centos7.9)2022最新学习(二):DDL语句
1)DDl :Data defination language(数据定义语言) 1.1)show databases: ...
- MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...
为什么80%的码农都做不了架构师?>>> 文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...
最新文章
- 为什么匿名内部类参数必须为final类型
- 【尚硅谷】大厂必备技术之JUC并发编程——笔记总结
- Ioc的推荐实现方式
- SAP BSP应用有状态和无状态行为差异比较
- 航海学校高级课程任务讲义
- 2013年6月和12月CISA考试报名,认证,CPE维持和备考要点
- TCP之1460MSS和1448负载
- 数据集:不同地区居民消费数据
- android切换输入法工具类
- 推荐系统—基于用户的协同过滤算法简单实现
- Mysql workbench画ER图
- 织梦联动添加三级分类后无法添加二级分类的解决方案
- 一次简单的 HTTP 调用,为什么时延这么大?
- python二维码加动态图_用python自制个性二维码(设置带LOGO的二维码带动图)
- Tuxera ntfs读写插件工具v2022版本 支持macOS15系统
- 单片机中的定时器计算
- 【VScode报错】> ools-1.1.3\debugAdapters\bin\WindowsDebugLa‘--stdout=Microsoft-MIEngine-Out-aguzdga1-npu
- Flash cs3无法编译(无法影片预览)
- 搭建gataway鉴权流程
- Python学习笔记:第二站 七十二变
热门文章
- pandas使用nlargest函数返回特定数据列中前N个最大值(搜寻最大的n个元素)、pandas使用nlargest函数返回特定数据列中前N个最大值所对应的数据行
- R语言ggplot2可视化多行文本轴标签、轴标签带下标、轴标签数学公式实战
- R语言ggplot2可视化改变线图(line plot)中线条的色彩实战
- R语言abs函数计算数值数据对象的绝对值实战
- OLTP与OLAP是什么?OLTP与OLAP的主要区别是什么?
- 自动编码(Autoencoder)器异常检测(outlier detection)实战
- vscode 显示最近打开的folder_vscode报错Module #x27;pygal#x27; has no #x27;Bar#x27; Member...
- ISLR_StatisticalLearning
- 混合和可扩展的纠错算法,用于长读的插入缺失和替换错误
- 目标检测---Segmentation Is All You Need