若是你对Java生成pdf感兴趣,关注公众号《andyqian》,回复 【pdf】,会给你一份福利!mysql
今天咱们继续谈谈MySQL Online DDL,不知道MySQL Online DDL 是什么的,能够先回顾前面《浅谈MySQL Online DDL (上)》,《浅谈MySQL Online DDL(中)》这两篇文章。sql
在执行Online DDL操做时,其实也须要一些空间的,以下:数据库
临时日志文件空间。该文件主要是执行DDL操做期间,用于保存DML操做数据的(innodb_online_alter_log_max_size)。临时日志文件大于指定的最大值时, ALTER TABLE操做会失败。未提交的DML操做将所有回滚。服务器
中间表文件的空间,指的是,重建表的,DDL操做期间,会在原始表中建立一个临时中间表文件,注意的是,这里不是重建表格,中间表文件的大小可能大于等于原始表大小。微信
临时排序文件的空间。重建表的在线DDL操做将临时排序文件写入MySQL临时目录,该目录的大小可能大于该数据以及索引的大小总和,若是磁盘可用空间小于该值时,则会致使DDL操做失败。spa
前面文章说了Online DDL诸多好处,简直爱不释手。但目前不是全部的DDL都支持在线操做的,有些DDL操做仍是会影响生产的DML操做,甚至会锁住整张表。这时咱们就应该理清楚,哪些是低成本操做,哪些高成本操做。设计
下面是经常使用操做不会锁住表(成本低)的操做:3d
请注意: 这里指的索引为二级索引日志
高成本 Online DDL操做code
下面这些操做,因为数据会重组,即便是Online DDL操做,其操做也很是昂贵,不建议在生产环境高峰时直接操做。不然会形成大量的等待操做。
Online DDL注意点
在使用Online DDL操做时,有不少的注意事项,这里给出几个比较常见的注意点:
1. 若是是主从复制模式,主服务器执行Online DDL会中止从库的复制操做,并一直等待主库的DDL操做后,采会恢复复制操做,也就是说从库会有延迟现象产生。
2. Online DDL操做不可中断,或者显示Online DDL操做的CPU/IO操做占用率。
3. MySQL5.6以前的版本,执行Online DDL操做会报语法错误,例如:
alter table t_base_user modify telephone varchar(50) null comment "",lock=none;
该语句在MySQL5.6及之后的版本中,能正常执行,在5.6版本以前,则直接报语法错误。在执行前,必定要检查本身的MySQL版本(可经过select version();命令查看)。
SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr]
命令: show databases;
做用: 显示当前数据库服务器上的全部数据库。
例如:
显示全部数据库
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | andyqian | | mydata | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)
过滤指定数据库
mysql> show databases like "andyqian"; +---------------------+ | Database (andyqian) | +---------------------+ | andyqian | +---------------------+ 1 row in set (0.00 sec)
以下图所示:
应用场景: 在显示数据库服务器上的数据库时,很是有用,和show tables;
命令结合起来,很是有用!
MySQL Online DDL 确实给咱们带来了很多便利,但我以为,这能够作为前期数据表设计不足或业务变化的一个补充,不该该过分依赖该操做。后期越多的Online DDL操做,说明前期的设计越不足,越值得总结!
(恩,这又是一个被打脸的地方,我本身数据库表设计时,时常也会比较粗心,忘记这,忘记那的。)到这里,MySQL Online DDL相关的内容已经所有说完了。下一篇咱们继续。
ps:在文章记录的时候,有些知识点确实比较欠缺,写的不深刻,理解也有些误差,也有很多错别字。被各类打脸!不过我以为挺好的,打脸了就记住了,就纠正了。下次就不被打脸了。
恩, 祝你们晚安!
相关阅读:
扫码关注,一块儿进步
我的博客: http://www.andyqian.com