Percona was founded in 2006 as a MySQL consulting firm by two MySQL support engineers. Sometime in 2008, Percona began compiling their own custom version of MySQL for their customers. They included scalability fixes to make it possible scale up effectively as multi-core servers became more common. Their major contribution to the MySQL community is the XtraDB storage engine, which is based on InnoDB. Most of their performance enhancements are found in XtraDB.
Percona Server is intended to be a drop-in replacement for the stock MySQL. Percona has always focused on the higher end of the market, and so performance and reliability are important to them. Through their extensive benchmarking and debugging, they have discovered and fixed numerous scalability problems. One of their major pushes has been for more consistent throughput from InnoDB/XtraDB. The storage engine was prone to short stalls under high load as it caught up writing data to disk. They have also pushed for changes to the storage engine’s architecture to make it more suitable for SSD drives.
I have always been very impressed with the transparency of Percona’s benchmarking results. Even if you do not use Percona Server, it is still worthwhile to subscribe to the MySQL Performance Blog. They use those benchmarks to identify where the biggest bottlenecks are, and find ways to fix them. They are generally focused on storage engine performance rather than things like query optimizer improvements. They also worked on making more diagnostic information available to users of Percona Server. Many of their improvements have been duplicated since then in MySQL 5.5 and 5.6.
Percona Server also includes HandlerSocket, a NoSQL interface to the InnoDB/XtraDB storage engine. HandlerSocket was developed by DeNA, a Japanese online gaming company. It supports a very high number of reads and writes per second, but can only be used for single-row keyed lookups. Oracle’s development of the memcached API for InnoDB was likely encouraged by HandlerSocket. It should be noted that one major issue with HandlerSocket is a lack of any serious security or permission system, so it should not be used without assessing the risk involved.
In the end, Percona Server is essentially an optimized version of Oracle’s MySQL Community Edition. Their optimizations are valuable, but I would still classify Percona Server as more of a “branch” than a true “fork”. They’re dependent on Oracle to continue to develop the main features of MySQL, while they work to make additional performance improvements.
Percona also offers a special version of Percona Server that includes Galera Cluster. Known as Percona XtraDB Cluster, it allows synchronous multi-master replication. In simple terms, you are able to write to any node in the cluster, and it will be replicated to all other nodes. It adds a degree of complexity to your setup, and should not be implemented lightly, but it is extremely valuable for many businesses.
Percona has developed some additional open source software beyond Percona Server and XtraDB that have been valuable to the MySQL community. Percona’s Baron Schwartz developed both Maatkit and Aspersa Toolkit, both of which contained useful utilities for database administrators. These were merged together to form Percona Toolkit. Some of my favorite utilities are:
* pt-online-schema-change, which allows you to alter tables without taking the database offline
* pt-table-checksum, which can identify problems with your replication
* pt-table-sync, which can fix problems with your replication
* pt-variable-advisor, which gives advice about potential problems with your configuration
* pt-query-digest, which helps profile the queries actually occurring on your server
There are dozens more utilities, many of which I’ve never used. I make sure they’re installed on all of my MySQL-based servers. They are compatible with all major flavors of MySQL, including Oracle MySQL, Percona Server, and MariaDB.
Percona has also released a utility called XtraBackup. This is an open source replacement for Oracle’s MySQL Enterprise Backup tool, and allows online backups of MySQL databases. It can backup MyISAM tables as well as InnoDB/XtraDB tables. As long as your MyISAM tables are small, it should be able to take the backup with a very minimal global lock.
Percona also has a tools site with online tools. So far, there are only two tools available. The first is the Configuration Wizard, which takes information you give it about your database server, and generates a computer-optimized configuration. This is great for people who need to administer a MySQL database server, but do not have enough experience to write their own configuration file tailored to their system. The second tool will help you analyze a complicated MySQL query and figure out how to optimize it.
Next week: MariaDB