MySQL Online DDL,照旧要审慎
导读 MySQL的Online DDL恒久饱受诟病,8.0之后有没有好一些呢... 本文重点接头常见的几种Online DDL需求:
其他的DDL操纵相比拟力少,以是本文就不接头了。 另外,本文也不接头非InnoDB引擎以及非平凡索引(如全文索引、空间索引)的场景。 我们先看下ALTER TABLE时ALGORITHM可以指定的几种方法:
执行DDL操纵时,ALGORITHM选项可以不指定,这时辰MySQL凭证INSTANT、INPLACE、COPY的次序自动选择吻合的模式。也可以指定ALGORITHM=DEFAULT,也是同样的结果。假如指定了ALGORITHM选项,但不支持的话,会直接报错。 当回收COPY模式时,这时内外任何的修改数据操纵,DDL城市被阻塞。COPY模式下会天生姑且新表,操纵完成后原表会被删除,新表被重定名为原表名。当DDL开始后,原表上仅能只读,其他的DML操纵也城市被阻塞。COPY进程中,独一会阻塞只读的机缘是在整理旧表布局和表界说缓存时。 1、以下是支持INPLACE模式的几种环境:
2、以下是支持INSTANT模式的几种环境:
3、几种必要用COPY模式的环境 当执行ALTER TABLE ADD COLUMN、CHANGE COLUMN、MODIFY COLUMN、ADD INDEX、FORCE 等操纵时,会将5.5版本之前的时刻范例相干字段逼迫进级到高版本,这个进级必要重建整个表,只能用COPY方法。这时假如指定 ALGORITHM=INPLACE 就会报错了。 当有连系索引并用于表分区时,假如修改了连系索引列次序的话,也必要用COPY模式。 4、最后用一个表格声名几种常见操纵的模式 最后有两个提示 一样平常DDL操纵最好都回收pt-osc或gh-ost这样的器材来实验,而且实验之前务须要先搜查当前线针表上是否有事宜或大查询未竣事,停止严峻的MDL锁守候 除了8.0以上版本,除了追加式新增列、表更名、新增假造列这三种支持INSTANT的操纵可以直接跑DDL,别的的都完好回收pt-osc/gh-osc器材,相对更不轻易出状 执行ALTER TABLE DDL时,不要画蛇添足指定ALGORITHM=?, LOCK=?选项,由于MySQL会自行判定该回收哪种方法。原来可以INPLACE的,也许不警惕给指定成COPY就悲剧了 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |