对于MySQL这种典型的关系型数据库,DDL对io的冲击是不容忽视的,这往往是由数据存储格式造成的。
Innodb 存储引擎是已经针对二级索引的修改作出了努力,即在ddl 过程中可以不拷贝数据,但是这个期间还是会锁住表的。对于ONLINE schema change OSC的使用,这个倒是挺方便。
一般的做法是现在备库上做DDL操作,然后在主从切换,等全部操作完成后在恢复原样。
在于关系型存储引擎将元数据和数据分开存储,对元数据的某些修改需要修改所有的数据。避免这个问题的一种做法是把元数据和数据放在一起,也就是NoSQL领域流行的Schema-free。
本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/983123,如需转载请自行联系原作者