April 09, 2012, 6:57 PM — Twitter has released some of the tweaks it has made to MySQL, potentially bringing greater scalability to the open-source relational database management system.
As one of the largest users of MySQL, Twitter uses the database software to store most of the data its 140 million users generate.
"Due to our scale, we push MySQL a lot further than most companies," wrote Twitter engineers Jeremy Cole and Davi Arnau, in a blog post announcing the release of a number of changes to the software Twitter originally made for its own use.
This code addresses a crucial issue for MySQL: the ability to scale to meet the demands of large data-processing-intensive systems, such as Twitter's. Much of the appeal behind NoSQL-styled databases, such as Cassandra, has come from how they bypass the limits that relational databases systems such as MySQL have had in scaling across multiple servers.
Among the changes is some code that would allow MySQL to run more effectively on large pooled-memory systems. Specifically, it allocates during startup all the memory needed for the core InnoDB database engine. It also ensures adequate performance even when available server memory is at a minimum.
Twitter's efforts to massively scale MySQL join a number of other products that target that specific need, such as Percona's recently released XtraDB cluster, Oracle's MySQL Cluster and TokuTek's TokuDB.
In addition to the scalability enhancements, Twitter also added a number of other features as well to the free code. They include new internal status checks, which would allow users to monitor InnoDB performance more closely. The code also optimizes MySQL for use of SSDs (Solid-State Disks).
Twitter released the code on the eve of the Percona Live MySQL conference, being held this week in Santa Clara, California. There, Cole and Arnau will be giving a presentation on Gizzard, Twitter's sharding and replication framework for MySQL.
Twitter posted the patches on GitHub, under a BSD (Berkeley Software Distribution) license.