Facebook, LinkedIn, Twitter и Google совместно создали специальную версию MySQL, разработанную специально для использования в приложениях, требующих массового масштабирования.
WebScaleSQL — это специальная версия MySQL, разработанная для крупномасштабных веб-приложений. Изменения, внесенные компаниями в базу данных, должны быть доступны как открытый исходный код, а информация передается в основной проект MySQL.
На сайте проекта участники WebScaleSQL написали:
«Мы знаем, что не только мы пытаемся решить эти конкретные проблемы. Поэтому мы будем держать WebScaleSQL открытым по мере продвижения, чтобы побудить других, у кого есть масштаб и ресурсы для настройки MySQL, присоединиться к нашим усилиям ».
В своем сообщении в блоге Стефан Грин из Facebook сказал, что цель запуска WebScaleSQL заключается в следующем:
«Чтобы члены сообщества MySQL, ориентированные на масштабирование, могли более тесно сотрудничать, чтобы расставить приоритеты по наиболее важным для нас аспектам».
Изменения в WebScaleSQL по сравнению с основной ветвью MySQL включают улучшения производительности с улучшением очистки буферного пула; оптимизация для определенных типов запросов, включая запросы индекса префикса; и поддержка политики чередования NUMA.
Оптимизация запросов индекса с префиксом состоит в том, чтобы заставить их по возможности пропускать поиск индекса кластера. В настоящее время InnoDB всегда будет извлекать кластеризованный индекс для всех столбцов префикса в индексе, даже если значение конкретной записи меньше длины префикса. Это изменение оптимизирует этот случай, чтобы использовать запись из вторичного индекса и избежать лишнего поиска.
NUMA (Non-Uniform Memory Access) поддерживает оборудование с несколькими системными шинами, каждая с небольшим набором процессоров, где каждая группа процессоров имеет свою собственную память. Каждый ЦП может получить доступ к памяти, связанной с другими группами, и каждая группа образует узел NUMA. MySQL традиционно имеет «проблемы», связанные с узлами NUMA — вы можете прочитать хорошее резюме в блоге архитектора MySQL Микаэля Ронстрома или в блоге Джереми Коула.
Параметр WebScaleSQL позволяет вам установить параметры запуска либо для очистки и очистки буферов и кешей, либо для запуска Mysql с чередованием его памяти на всех ЦП.
WebScaleSQL также включает новые функции для работы в веб-масштабе, такие как super_read_only, и возможность указывать время ожидания клиента менее секунды.
Если вы заинтересованы в участии в проекте, WebScale SQL находится на GitHub.