Spec-Zone.ru › MariaDB

Двигатель хранения Aria

Двигатель хранения Aria по умолчанию компилируется из MariaDB 5.1 и должен быть активен при запуске MariaDB.

Начиная с MariaDB 10.4, все системные таблицы используют Aria.

Кроме того, внутренние таблицы на диске используют формат таблиц Aria вместо формата MyISAM. Это должно ускорить некоторые запросы GROUP BY и DISTINCT, так как Aria имеет лучшую кэширование, чем MyISAM.

Примечание: Двигатель хранения Aria ранее назывался Maria (см. Название Aria для получения подробностей о переименовании), и в предыдущих версиях MariaDB он по-прежнему назывался Maria.

Следующие параметры таблицы применяются к таблицам Aria в CREATE TABLE и ALTER TABLE:

  • TRANSACTIONAL= 0 | 1 : Если параметр таблицы TRANSACTIONAL установлен для таблицы Aria, то таблица будет безопасной при сбоях. Это реализуется путём логирования всех изменений в таблице в журнал транзакций Aria и синхронизации этих записей в конце оператора. Это незначительно замедлит запись и обновление. Однако преимущество состоит в том, что если сервер выйдет из строя до завершения оператора, все недолговечные изменения будут отменены до состояния в начале оператора. Это также требует до 6 байт больше для каждой строки и ключа для хранения идентификатора транзакции (чтобы разрешить одновременные операции вставки и выбора).
    • TRANSACTIONAL=1 не поддерживается для разграниченных таблиц.
    • Значение параметра таблицы TRANSACTIONAL по умолчанию для таблицы Aria зависит от значения параметра таблицы ROW_FORMAT. Подробности см. ниже.
    • Если параметр таблицы TRANSACTIONAL установлен для таблицы Aria, то таблица фактически не поддерживает транзакции. См. MDEV-21364 для получения дополнительной информации. В этом контексте транзакционный означает просто безопасный при сбоях.
  • PAGE_CHECKSUM= 0 | 1 : Если для индексов и данных должны быть использованы контрольные суммы страниц для дополнительной безопасности.
  • TABLE_CHECKSUM= 0 | 1 : То же, что и CHECKSUM в MySQL 5.1
  • ROW_FORMAT=PAGE | FIXED | DYNAMIC : Формат строк таблицы.
    • Значение по умолчанию — PAGE.
    • Для эмуляции MyISAM установите ROW_FORMAT=FIXED или ROW_FORMAT=DYNAMIC

Параметры таблицы TRANSACTIONAL и ROW_FORMAT взаимодействуют следующим образом:

  • Если TRANSACTIONAL=1 установлен, то единственный поддерживаемый формат строк — PAGE. Если ROW_FORMAT установлен на другое значение, Aria выводит предупреждение, но все равно принудительно устанавливает формат строк в PAGE.
  • Если TRANSACTIONAL=0 установлен, таблица не будет безопасной при сбоях, и поддерживается любой формат строк.
  • Если TRANSACTIONAL не установлен, то поддерживается любой формат строк. Если ROW_FORMAT установлен, таблица будет использовать этот формат строк. В противном случае таблица будет использовать формат строк по умолчанию PAGE. В этом случае, если таблица использует формат строк PAGE, она будет безопасной при сбоях. Если она использует другой формат строк, то она не будет безопасной при сбоях.

Другие усовершенствования:

  • CHECKSUM TABLE теперь игнорирует значения в полях NULL. Это ускоряет CHECKSUM TABLE и исправляет некоторые случаи, когда одно и то же определение таблицы могло давать разные значения контрольной суммы в зависимости от формата строк. Недостатком является то, что значение теперь отличается от других установок MySQL. Новый вычисление контрольной суммы исправлено для всех движков таблиц, которые используют стандартный способ вычисления и MyISAM, который выполняет вычисления внутри. Примечание: старые таблицы MyISAM с внутренней контрольной суммой будут возвращать ту же контрольную сумму, что и раньше. Чтобы исправить их, чтобы они рассчитывали в соответствии с новыми правилами, вам нужно выполнить ALTER TABLE. Вы можете использовать старые способы вычисления контрольных сумм, используя параметр --old для mariadbdmysqld или установить системную переменную '@@old' в 1 при выполнении CHECKSUM TABLE ... EXTENDED;
  • При запуске Aria проверяет журналы Aria и автоматически восстанавливает таблицы с последней точки сохранения, если сервер был неправильно остановлен. См. Журналы Aria

Параметры запуска для Aria

Полный список см. в Переменные сервера Aria.

В обычной работе нужно учитывать только следующие переменные:

  • aria-pagecache-buffer-size
    • Здесь кэшируются все страницы индексов и данных. Чем больше это значение, тем быстрее будет работать Aria.
  • aria-block-size
    • Значение по умолчанию 8192, должно подойти для большинства случаев. Единственная проблема с большим значением заключается в том, что поиск упакованного ключа в блоке занимает больше времени, так как нужно примерно 8192/2 поиска для каждого ключа. Мы планируем исправить это, добавив словарь в конце страницы, чтобы иметь возможность выполнять бинарный поиск в блоке перед запуском сканирования. Пока это не будет сделано, и поиск ключей займёт слишком много времени, даже если вы не попадаете на диск, следует рассмотреть возможность уменьшения этого значения.
    • Возможные значения для проб: 2048, 4096 или 8192
    • Обратите внимание, что вы не можете изменить это без создания дампов, удаления старых таблиц и удаления всех файлов журналов, а затем восстановления ваших таблиц Aria. (Это единственный вариант, который требует дампов и загрузки)
  • aria-log-purge-type
    • Установите это значение в "at_flush", если вы хотите сохранить копию журналов транзакций (хорошо как дополнительная резервная копия). Журналы останутся до тех пор, пока вы не выполните FLUSH ENGINE LOGS.

Файлы журналов Aria

Файл aria_log_control — это очень короткий файл журнала (52 байта), который содержит текущее состояние всех таблиц Aria, связанных с протоколированием и контрольными точками. В частности, он содержит следующую информацию:

Aria file version: 1
Block size: 8192
maria_uuid: ee948482-6cb7-11ed-accb-3c7c3ff16468
last_checkpoint_lsn: (1,0x235a)
last_log_number: 1
trid: 28
recovery_failures: 0
  • uuid — уникальный идентификатор для каждой системы. Все файлы Aria, созданные, будут содержать копию этого в своих заголовках .MAI. Это в основном используется для проверки, не скопировал ли кто-нибудь файл Aria между серверами MariaDB.
  • last_checkpoint_lsn и last_log_number — информация о текущих файлах aria_log.
  • trid — наибольший номер транзакции, встреченный до сих пор. Используется при восстановлении.

Файлы aria_log.* содержат журнал всех операций, изменяющих файлы Aria (включая создание таблиц, удаление таблиц, вставки и т. д.). Это обычный WAL (журнал предзаписи), похожий на файл журнала InnoDB, за исключением того, что aria_log содержат как операции redo, так и undo. Старые файлы aria_log автоматически удаляются, когда они больше не нужны (ни последняя контрольная точка, ни какая-либо выполняющаяся транзакция не нуждаются больше в старых данных).

Отсутствует допустимый идентификатор

Ошибка Missing valid id at start of file. File is not a valid aria control file означает, что что-то перезаписало по крайней мере первые 4 байта в файле. Это может произойти из-за проблемы с файловой системой (аппаратное или программное обеспечение) или ошибки, в которой поток внутри MariaDB записал в неправильный дескриптор файла (в этом случае следует сообщить об ошибке, прикрепив копию файла управления для помощи).

В случае повреждения файла журнала, при остановленном сервере, можно исправить это, удалив все файлы aria_log. Если файл control_file поврежден, то необходимо удалить файл aria_control_file и все файлы aria_log.*. Это означает, что при открытии таблицы Aria сервер будет считать, что она перемещена с другой системы, и выполнит автоматическую проверку и ремонт. Если проблем не было, таблица откроется и может использоваться как обычно. См. также Когда безопасно удалить старые файлы журнала.

См. также

  • Вопросы и ответы по Aria
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/aria-storage-engine/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API