Twitter обнародовал код своих наработок для MySQL

Twitter открыл доступ к коду собственных дополнений и улучшений для MySQL, разрабатываемых в рамках Twitter MySQL 5.5. На сегодняшний день СУБД MySQL является основным хранилищем информации в Twitter, включая данные пользователей, их интересы, связи и сами твитты. По мере того, как сервис рос и повышались требования к масштабируемости, разработчики Twitter дополняли и усовершенствовали MySQL в рамках внутреннего форка этой СУБД. Теперь все сделанные ими наработки в отношении данного форка выложены в открытый доступ и могут быть интегрированы как в центральную кодовую базу MySQL, так в любой сторонний проект. Код от разработчиков Twitter доступен по лицензии BSD (сама MySQL имеет лицензию GPL).

Среди дополнений, внесенных компанией Twitter, выделяются следующие:

  • Ввод дополнительных переменных, позволяющих оценить состояние системы и внутренних структур InnoDB. Переменные расширяют возможности и повышают эффективность мониторинга работы СУБД, дают более точную оценку поведения при реальной нагрузке. В частности, открывается доступ к данным об открытии/закрытии файлов, количестве обнаруженных deadlock и идентификаторов последовательностей бинарного лога.
  • Оптимизация выделения памяти для крупномасштабных систем, построенных на архитектуре NUMA: память для буферов InnoDB выделяется в полном объеме при запуске, случаи дефицита памяти обрабатываются в ускоренном темпе, предсказуемая производительность обеспечивается даже в случае недостатка ресурсов памяти.
  • Сокращение рабочего времени благодаря дополнительным средствам управления таймаутами на сервере. Например, запросы, выполнение которых превышает указанный таймаут, могут прекращаться в принудительном порядке.
  • Ускоренный надежный экспорт и загрузка содержимого пула InnoDB-буферов для немедленного разогрева БД в случае перезапуска и минимизации негативных последствий остановки сервисов.
  • Оптимизация MySQL для работы с SSD-накопителями (новый метод сброса буферов, уменьшение количества операций записи при работе).

Помимо этого, в ходе конференции Percona Live MySQL, намеченной на 12 апреля, разработчиками Twitter будет представлен открытый фреймворк Gizzard, в задачу которого входит шардинг данных поверх неоднородных и распределенных кластеров серверов MySQL. Данный фреймворк отвечает за автоматизированное распределение наборов данных между серверами при помощи соответствующего ключа (партицирование), а также обеспечивает необходимое резервирование, реплицируя один набор данных на разные сервера. В функции системы также входит разрешение конфликтов и восстановление данных при возникновении сбоев на отдельных узлах.