高并发下,MySQL无锁变更,Online DDL和PT-OSC哪个更胜一筹?
- 内容介绍
- 文章标签
- 相关推荐
高并发下MySQL无锁变更,Online DDL和PT-OSC哪个更胜一筹?
哎呀,说到这个高并发下的MySQL变更,真的是一把辛酸泪啊!谁没在大半夜被叫起来修过数据库呢?那种感觉,简直了。今天咱们就来好好唠唠这个让人头秃的问题:到底是用原生的Online DDL,还是用老牌的PT-OSC?这不仅仅是个技术选型,简直就是一场赌博!赌赢了相安无事;赌输了那就是全站崩溃,老板拿着刀站在你身后,公正地讲...。
先说说 我们得明白一个事儿,无锁变更这四个字听起来很美,其实吧坑多着呢。很多人以为开了Online DDL就真的“Online”了业务完全不受影响,天真!太天真了,简直了。!

MySQL 5.6+的Online DDL:真的那么香吗?
MySQL 5.6开始支持Online DDL操作。在这之前,对表的修改会阻塞整个表的读写操作。 在5.6之后,可以使用ALTER TABLE语句的ALGORITHM和LOCK子句来控制DDL操作的各个方面。这些子句位于语句的末尾,通过逗号与表和列规范分开。比方说: ALTER TABLE tbl_name ADD PRIMARY KEY , ALGORITHM=INPLACE, LOCK=NONE; LOCK子句有助于微调对表的并发访问程度。
ALGORITHM子句主要用于性能比较,以及作为在遇到任何问题时回落到旧的表复制行为的备用方案。
听起来是不是很完美?ALGORITHM=INPLACE和LOCK=NONE参数实现“原地修改”,避免全表拷贝。但是兄弟们,别高兴得太早!这玩意儿限制一大堆,我懂了。
高并发下MySQL无锁变更,Online DDL和PT-OSC哪个更胜一筹?
哎呀,说到这个高并发下的MySQL变更,真的是一把辛酸泪啊!谁没在大半夜被叫起来修过数据库呢?那种感觉,简直了。今天咱们就来好好唠唠这个让人头秃的问题:到底是用原生的Online DDL,还是用老牌的PT-OSC?这不仅仅是个技术选型,简直就是一场赌博!赌赢了相安无事;赌输了那就是全站崩溃,老板拿着刀站在你身后,公正地讲...。
先说说 我们得明白一个事儿,无锁变更这四个字听起来很美,其实吧坑多着呢。很多人以为开了Online DDL就真的“Online”了业务完全不受影响,天真!太天真了,简直了。!

MySQL 5.6+的Online DDL:真的那么香吗?
MySQL 5.6开始支持Online DDL操作。在这之前,对表的修改会阻塞整个表的读写操作。 在5.6之后,可以使用ALTER TABLE语句的ALGORITHM和LOCK子句来控制DDL操作的各个方面。这些子句位于语句的末尾,通过逗号与表和列规范分开。比方说: ALTER TABLE tbl_name ADD PRIMARY KEY , ALGORITHM=INPLACE, LOCK=NONE; LOCK子句有助于微调对表的并发访问程度。
ALGORITHM子句主要用于性能比较,以及作为在遇到任何问题时回落到旧的表复制行为的备用方案。
听起来是不是很完美?ALGORITHM=INPLACE和LOCK=NONE参数实现“原地修改”,避免全表拷贝。但是兄弟们,别高兴得太早!这玩意儿限制一大堆,我懂了。

