Skip to content
This repository

MySQL fork maintained and used at Twitter

branch: master
Octocat-spinner-32 .bzr-mysql Fix tree setup: Wrong mailing list for commit mails. March 20, 2012
Octocat-spinner-32 BUILD Correcting the permissions of the executable files. March 20, 2013
Octocat-spinner-32 Docs Merging the changes for Bug 16633169 - MYSQL.INFO CONTAINS OUTDATED I… April 16, 2013
Octocat-spinner-32 client MYSQL-266: CVE-2012-5627: Reuse of salt during change_user October 29, 2013
Octocat-spinner-32 cmake Enable Twitter MySQL build with system openssl library February 04, 2014
Octocat-spinner-32 cmd-line-utils Fix for Bug 16395495 - OLD FSF ADDRESS IN GPL HEADER March 19, 2013
Octocat-spinner-32 dbug BUG#16402143 - STACK CORRUPTION IN DBUG_EXPLAIN April 10, 2013
Octocat-spinner-32 extra Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 include Add percona user statistics patch January 29, 2014
Octocat-spinner-32 libmysql Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 libmysqld Merge tag 'mysql-5.5.34' into MYSQL-249 October 22, 2013
Octocat-spinner-32 libservices Updated/added copyright headers June 30, 2011
Octocat-spinner-32 man Exclude NDB man pages from a source tarball, October 04, 2011
Octocat-spinner-32 mysql-test Write query throttling and general qeury throttling (IM-1108) April 11, 2014
Octocat-spinner-32 mysys Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 packaging Removed non gpl file mysql.info from uln community package November 05, 2013
Octocat-spinner-32 plugin Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 regex BUG#14303860 - EXECUTING A SELECT QUERY WITH TOO January 14, 2013
Octocat-spinner-32 scripts Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 sql-bench Bug #13004581 BLACKHOLE BINARY LOG WITH ROW IGNORES UPDATE AND DELETE… April 27, 2013
Octocat-spinner-32 sql-common Bug #17297012 MEMORY LEAK IN MYSQL_OPTIONS WHILE CALLING WITH OPTION … August 30, 2013
Octocat-spinner-32 sql Write query throttling and general qeury throttling (IM-1108) April 11, 2014
Octocat-spinner-32 storage MYSQL-355: Add option to disable deadlock detection March 20, 2014
Octocat-spinner-32 strings Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 support-files Disable community package check for docs/mysql.info January 16, 2014
Octocat-spinner-32 tests MYSQL-266: CVE-2012-5627: Reuse of salt during change_user October 29, 2013
Octocat-spinner-32 unittest Merge tag 'mysql-5.5.33' into MYSQL-184 August 13, 2013
Octocat-spinner-32 vio Enable Twitter MySQL build with system openssl library February 04, 2014
Octocat-spinner-32 win Updated/added copyright headers June 30, 2011
Octocat-spinner-32 zlib Bug 13878021 - WINDOWS PACKAGE THAT INCLUDES .PDB FILES FOR INTERMEDI… October 09, 2013
Octocat-spinner-32 .bzrfileids Bug#17513737 INTRODUCE CHECK TABLE...QUICK October 17, 2013
Octocat-spinner-32 .bzrignore Raise Twitter MySQL version to t11-dev March 14, 2013
Octocat-spinner-32 .reviewboardrc Specify the repository name for Review Board. November 16, 2011
Octocat-spinner-32 BUILD-CMAKE Updated/added copyright headers June 30, 2011
Octocat-spinner-32 CMakeLists.txt Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
Octocat-spinner-32 COPYING Use a new version of "COPYING", the GPL text. March 04, 2010
Octocat-spinner-32 INSTALL-SOURCE Merging the changes for Bug 16633169 - MYSQL.INFO CONTAINS OUTDATED I… April 16, 2013
Octocat-spinner-32 INSTALL-WIN-SOURCE Merging the changes for Bug 16633169 - MYSQL.INFO CONTAINS OUTDATED I… April 16, 2013
Octocat-spinner-32 README-MySQL Merge tag 'mysql-5.5.32' into t12-dev July 25, 2013
Octocat-spinner-32 README.md Complete a thought and correct for consistency. April 09, 2012
Octocat-spinner-32 VERSION Raise Twitter MySQL version to 5.5.35.t15 March 19, 2014
Octocat-spinner-32 config.h.cmake Bug#65830: utf8_general_cs is not available July 21, 2012
Octocat-spinner-32 configure.cmake Merge tag 'mysql-5.5.35' into MYSQL-288 January 16, 2014
README.md

Twitter MySQL 5.5

This is Twitter's MySQL development branch, which is based on MySQL 5.5 as published by Oracle on MySQL on Launchpad.

This repository is published in order to share code and information and is not intended to be used directly outside of Twitter. We provide no guarantees of bug fixes, ongoing maintenance, compatibility, or suitability for any user outside of Twitter.

The original README file provided with the upstream MySQL release can be found at README-MySQL.

Features in Twitter MySQL

Additional status variables

Additional status variables have been added, particularly from the internals of InnoDB. This allows us to monitor our systems more effectively and understand their behavior better when handling production workloads. The variables added are:

  • The number of InnoDB files and tablespace files opened, closed, and currently open. This information was previously not exposed by InnoDB.
  • The number of deadlocks encountered. This information was previously not exposed by InnoDB.
  • The current log sequence number (LSN) as well as the LSN flushed up to and checkpointed up to. This information has previously been available in SHOW ENGINE INNODB STATUS.

Optimization of memory allocation under NUMA

On most recent multi-processor systems, a non-uniform memory access NUMA (NUMA) architecture is in use, which divides the total system memory across multiple NUMA "nodes". When allocating large amounts of memory to InnoDB's buffer pool, as is typical, some inefficiencies as well as serious problems can be encountered. More details about the problems typical in NUMA systems running MySQL can be found in a blog post by Jeremy Cole. The following changes have been made to optimize and improve this:

  • An option has been added to forcibly pre-allocate the entire buffer pool during startup. This is primarily intended to force the system to decide which pages to allocate, and on which NUMA node to allocate them. If the buffer pool can't be fully allocated for any reason, InnoDB will abort during startup.
  • An option has been added to mysqld_safe to wrap the start of mysqld with numactl --interleave=all to interleave memory allocation between all NUMA nodes available. This ensures that no NUMA node is favored for any allocation, so that memory usage will remain even over time between multiple NUMA nodes.
  • An option has been added to mysqld_safe to flush the operating system buffer caches before startup (on Linux only). Linux will normally not evict optional caches to make new allocations unless the system is under memory pressure, which can cause supposedly evenly interleaved memory allocations to still be done unevenly, favoring the node with less data cached before startup. Flushing the caches before startup ensures that no large cache allocations are present in the system before InnoDB allocates its buffer pool.

Server-side query timeout

  • Reduced unnecessary work through improved server-side statement timeout support. This allows the server to proactively cancel queries that run longer than a millisecond-granularity timeout.

Buffer pool export and restore by prefetch

  • Export and restore InnoDB buffer pool in using a safe and lightweight method. This enables us to build tools to support rolling restarts of our services with minimal pain.

Optimization for solid-state drives (SSDs)

  • Optimize MySQL for SSD-based machines, including page-flushing behavior and reduction in writes to disk to improve lifespan.
Something went wrong with that request. Please try again.