您的位置:首页 > 数据库 > MySQL

Facebook针对MySQL开源Online Schema Change代码

2010-09-29 10:08 513 查看
有过MySQL使用经验的人应该知道,MySQL要想在线修改个Schema结构是个麻烦事,规模不大的表增加个索引造成的锁也可能导致整个Web 应用宕机。不过现在这个缺陷临近被彻底修复。Facebook 的数据库技术团队将 Online Schema Change (OSC) 的代码开源,并且撰文进行了详尽的阐述。丁香园( http://dxy.cn )CTO冯大辉(Fenng)对此写了一篇博文,以赞Facebook的这一举动。现转载此文于此,全文如下:

有过 MySQL 使用经验的人应该知道,MySQL 要想在线修改个 Schema 结构是个麻烦事,规模不大的表增加个索引造成的锁也可能导致整个 Web 应用宕机。这一点没办法和 Oracle RDBMS 、DB2 等商业数据库相比,甚至 PostgreSQL 也具备联机 DML 的能力。我在过去写过一系列并不成熟的《MySQL 大企业级应用可行性分析》 文章中,也很是担忧这个问题。有些公司想迁移到 MySQL ,也因此而只能采取保守的做法。

不过现在这个缺陷临近被彻底修复。Facebook 的数据库技术团队将 Online Schema Change (OSC) 的代码开源,并且撰文进行了详尽的阐述。这是个很大的技术革新,Facebook数千台MySQL服务器在过去增加个索引需要几个月的滚动升级,现在只需要几天即可。

MySQL 5.1的InnoDB引擎具备Fast Index Creation的功能,在创建索引的时候无需复制整个表的内容,但是对于一定规模的大表增加索引,仍然需要花费大量时间,对于在线应用来说,仍然不可忍受。而Facebook的OSC则进一步进行了改进。对于MySQL DBA来说,这是个福音。感谢Facebook的员工Vamsi Ponnekanti 的工作。如果要我说,年度 MySQL DBA 应该授予给他。当然,Online Schema Change 的部分代码从 Shlomi Noach 的 Openark Kit 中派生,建议 Shlomi Noach 一同获奖...

对于 MySQL 来说,我认为这是个里程碑式的时刻,无论 Oracle 将给与 MySQL 多大的投入,其它公司已经主动拿过接力棒。Facebook 技术团队再次立功了!

--EOF--

Update: Facebook 工程师在帖子里说了“Note that the above operations can be done within the storage engine itself, or using an external (PHP) script.”要知道,这并非只是一个PHP脚本的实现。我建议技术人员看帖子应该更仔细一些。也不要说这东西你早都想到了之类的技术阿Q的话,我倒现在为止没听到国内一个公司的技术人员做出来这东西。从想法到实现,其实还有十万八千零一公里呢。

原文链接:http://www.dbanotes.net/opensource/facebook_mysql_online_schema_change.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: