mysql5.6的online ddl功能测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: online DDL的前身是 innodb fast index creation(5.1和5.5), 5.6里对这个功能做了扩展: 很多alter table的操作绕开了 table copying,支持DML并发操作。


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

 

http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html
中的Table 14.5列出了详细的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操作最后锁定表的时间更长(锁定表,应用日志到表上)。
每一个变化的索引或者表都会分配一个。


参考:
http://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html
http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-examples.html

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
MySQL DDL(数据定义语言)深度解析
MySQL DDL(数据定义语言)深度解析
|
2月前
|
SQL 存储 关系型数据库
"MySQL增列必锁表?揭秘InnoDB在线DDL,让你的数据库操作飞一般,性能无忧!"
【8月更文挑战第11天】在数据库领域,MySQL凭借其稳定高效的表现深受开发者喜爱。对于是否会在给数据表添加列时锁表的问题,MySQL的行为受版本、存储引擎等因素影响。从5.6版起,InnoDB支持在线DDL,可在改动表结构时保持表的可访问性,避免长时间锁表。而MyISAM等则需锁表完成操作。例如,在使用InnoDB的表上运行`ALTER TABLE users ADD COLUMN email VARCHAR(255);`时,通常不会完全锁表。虽然在线DDL提高了灵活性,但复杂操作或大表变更仍可能暂时影响性能。因此,进行结构变更前应评估其影响并择机执行。
57 6
|
2月前
|
关系型数据库 MySQL OLTP
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
【8月更文挑战第6天】使用 pt-query-digest 工具分析 MySQL 慢日志性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
197 0
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
|
2月前
|
关系型数据库 MySQL 测试技术
使用docker部署MySQL测试环境
使用docker部署MySQL测试环境
24 0
|
3月前
|
SQL 算法 关系型数据库
Mysql Online DDL
Mysql Online DDL
27 2
|
3月前
|
数据库
基于PHP+MYSQL开发制作的趣味测试网站源码
基于PHP+MYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要你女朋友查询你的名字觉得很好 那就得是她第一反应是查和你的缘分, 如果查的是别人,那不好意思,第二个可能是你。
54 3
|
2月前
|
SQL 缓存 关系型数据库
MySQL配置简单优化与读写测试
MySQL配置简单优化与读写测试
|
3月前
|
SQL 存储 关系型数据库
MySQL数据库—初识数据库 | DDL语句 | DML语句
MySQL数据库—初识数据库 | DDL语句 | DML语句
|
4月前
|
SQL 算法 关系型数据库
MySQL Online DDL原理解读
MySQL Online DDL原理解读
|
4月前
|
SQL 算法 关系型数据库
MySQL Online DDL详解:从历史演进到原理及使用
MySQL Online DDL详解:从历史演进到原理及使用

推荐镜像

更多