Открыть сервис

XtraDB

XtraDB — это движок (подсистема) хранения данных для системы управления базами данных (СУБД) MariaDB, разработанный компанией Percona. Представляет собой форк (ответвление) движка InnoDB, созданного для MySQL, с добавлением ряда улучшений, направленных на повышение производительности, масштабируемости и надёжности при работе с большими объёмами данных. XtraDB является движком хранения по умолчанию в MariaDB начиная с версии 5.1, заменив собой InnoDB.

История

Разработка XtraDB началась в 2008 году компанией Percona, специализирующейся на консалтинге и оптимизации производительности MySQL. Основной причиной создания форка стало желание внедрить в InnoDB улучшения, которые не были приняты компанией Oracle (владельцем MySQL) в основную ветку разработки. Первый публичный релиз XtraDB состоялся в 2009 году.

В 2009 году проект MariaDB, возглавляемый создателем MySQL Михаэлем Видениусом, выбрал XtraDB в качестве основного движка хранения. Это решение было обусловлено тем, что XtraDB предлагал более высокую производительность и дополнительные возможности по сравнению с оригинальным InnoDB, особенно в сценариях с высокой нагрузкой на запись и большими объёмами данных. С этого момента XtraDB и MariaDB развивались в тесной связке.

В 2013 году компания Oracle выпустила версию InnoDB 5.7, которая включала многие из улучшений, ранее доступных только в XtraDB. Несмотря на это, XtraDB продолжал развиваться, добавляя уникальные функции и оптимизации. В 2019 году, с выходом MariaDB 10.5, разработчики объявили о постепенном отказе от XtraDB в пользу нового движка хранения MyRocks, основанного на LSM-деревьях, и возврате к использованию InnoDB для совместимости. Однако XtraDB остаётся доступным и поддерживается в MariaDB, хотя и не является движком по умолчанию в последних версиях.

Архитектура и ключевые особенности

XtraDB базируется на архитектуре InnoDB, но включает ряд существенных изменений и дополнений.

Буферный пул и управление памятью

  • Улучшенный буферный пул: XtraDB использует более эффективные алгоритмы управления буферным пулом (кэшем страниц данных в памяти), что позволяет снизить количество операций чтения с диска.
  • Поддержка нескольких буферных пулов: В XtraDB можно настроить несколько буферных пулов, что уменьшает конкуренцию потоков (latch contention) и повышает производительность на многоядерных системах.
  • Адаптивный хеш-индекс: XtraDB включает улучшенную версию адаптивного хеш-индекса, который автоматически создаёт хеш-таблицы для часто запрашиваемых данных, ускоряя поиск.

Параллелизм и блокировки

  • Улучшенный механизм блокировок: XtraDB использует более эффективные алгоритмы для управления блокировками строк, что снижает накладные расходы и повышает пропускную способность при высоком уровне параллельных транзакций.
  • Поддержка нескольких потоков для операций ввода-вывода: XtraDB может использовать несколько потоков для асинхронного ввода-вывода, что ускоряет запись и чтение данных на диск.

Производительность записи

  • Улучшенный механизм контрольных точек (checkpointing): XtraDB использует более эффективный алгоритм создания контрольных точек, что снижает время восстановления после сбоя и уменьшает нагрузку на диск.
  • Оптимизация журнала транзакций (redo log): XtraDB позволяет настраивать размер и количество файлов журнала, а также использует более эффективные алгоритмы записи, что повышает производительность при большом количестве операций записи.

Дополнительные возможности

  • Сжатие данных: XtraDB поддерживает сжатие страниц данных на диске, что позволяет экономить место и ускорять операции чтения за счёт уменьшения объёма данных, считываемых с диска.
  • Прозрачное шифрование: XtraDB поддерживает шифрование данных на уровне таблиц, что обеспечивает безопасность данных без необходимости изменения приложений.
  • Поддержка полнотекстового поиска: XtraDB включает встроенную поддержку полнотекстового поиска, что позволяет выполнять сложные запросы по текстовым полям.

Сравнение с InnoDB

XtraDB и InnoDB имеют общую архитектуру, но XtraDB предлагает ряд преимуществ в производительности и функциональности, особенно в сценариях с высокой нагрузкой на запись и большими объёмами данных.

ХарактеристикаInnoDB (Oracle)XtraDB (Percona/MariaDB)
Буферный пулОдин пул, стандартные алгоритмыНесколько пулов, улучшенные алгоритмы
БлокировкиСтандартные механизмыУлучшенные алгоритмы, снижение конкуренции
Контрольные точкиСтандартный механизмУлучшенный механизм, снижение нагрузки на диск
СжатиеПоддерживается (с версии 5.7)Поддерживается, более эффективные алгоритмы
ШифрованиеПоддерживается (с версии 5.7)Поддерживается, прозрачное шифрование
Производительность записиХорошаяВыше, особенно при высокой нагрузке
МасштабируемостьХорошаяВыше, особенно на многоядерных системах

Применение

XtraDB широко используется в проектах, где требуется высокая производительность и надёжность при работе с базами данных. Основные области применения:

  • Веб-приложения с высокой нагрузкой: XtraDB хорошо подходит для сайтов и веб-сервисов с большим количеством одновременных пользователей и интенсивными операциями записи (например, системы управления контентом, интернет-магазины, социальные сети).
  • Системы обработки транзакций (OLTP): XtraDB обеспечивает высокую производительность и надёжность для систем, обрабатывающих большое количество транзакций (например, банковские системы, системы бронирования).
  • Хранилища данных: XtraDB может использоваться для хранения и обработки больших объёмов данных, хотя для аналитических нагрузок часто предпочтительнее специализированные движки (например, MyRocks, Aria).
  • Проекты, использующие MariaDB: XtraDB является движком хранения по умолчанию в MariaDB, поэтому все проекты, использующие эту СУБД, автоматически получают доступ к его возможностям.

Критика и ограничения

Несмотря на преимущества, XtraDB имеет и некоторые ограничения:

  • Сложность настройки: Для достижения максимальной производительности XtraDB требует тонкой настройки множества параметров, что может быть сложным для начинающих администраторов баз данных.
  • Потребление памяти: XtraDB может потреблять больше оперативной памяти по сравнению с InnoDB, особенно при использовании нескольких буферных пулов.
  • Совместимость: XtraDB не полностью совместим с InnoDB, что может вызывать проблемы при миграции данных между СУБД.
  • Постепенное замещение: В MariaDB 10.5 и выше XtraDB постепенно заменяется на MyRocks и InnoDB, что может привести к снижению поддержки и развития в будущем.

Интересные факты

  • XtraDB был разработан компанией Percona, которая также создала инструменты для мониторинга и оптимизации MySQL, такие как Percona Monitoring and Management (PMM) и Percona Toolkit.
  • Название «XtraDB» происходит от английского слова «extra» (дополнительный), что отражает его позиционирование как улучшенной версии InnoDB.
  • XtraDB использовался в таких крупных проектах, как Wikipedia, Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) и Google, для обеспечения высокой производительности и надёжности их баз данных.

Источники

  • Percona XtraDB Documentation
  • MariaDB Knowledge Base: XtraDB
  • MySQL Performance Blog: XtraDB vs InnoDB
  • «High Performance MySQL» by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko
Загружаем BFOmetr…