这篇文章主要为大家详细介绍了MySQL Online DDL的用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
Online DDL在MySQL 5.6才开始支持的,在5.5及之前版本,使用alter table/create index等命令进行表结构修改操作均会锁表,这在生产环境上明显是不可接受的。
在MySQL 5.7,Online DDL在性能和稳定性上不断得到优化,性能有显著优势,且对业务负载影响小,停写时间可控,相对pt-osc/gh-ost来说,无需安装第三方依赖包,同时支持Inplace算法的Online DDL,由于无需拷表,所需磁盘空间也更小。
先来看一个常见的DDL语句:
代码如下:
ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;
MySQL Online DDL的使用分析
其中,LOCK描述了DDL期间运行的并发程度,ALGORITHM描述了DDL的实现方式
同时这一过程中,为了保持数据的一致性,中间复制数据时(Copy Table)全程锁表只读,如果有写请求进来将无法提供服务,将导致连接数爆张。
这一过程中,alter 语句在启动的时候获取MDL写锁,但是这个写锁在真正拷贝数据之前就退化成读锁,也就是说在最耗时的copy数据到临时文件的过程中,原表是可以进行dml操作的,仅仅会在最后的新旧表切换阶段加锁,这个rename的时间就非常快了。
标记为expensive cost的操作虽然允许OnlineDDL,但本身对服务器IO,CPU都会造成较高负担,同时会导致复制阻塞,造成另一种形式的从库复制延迟,所以如果是大表,建议业务低峰期执行
以上就是Mysql Online DDL的使用详解的详细内容,更多关于Mysql Online DDL的使用的资料请关注四海网其它相关文章!
本文来自:http://www.q1010.com/177/19183-0.html
注:关于MySQL Online DDL的用法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。