Тюнинг ZFS, MySQL и InnoDB

Тюнинг MySQL и InnoDB

InnoDB начинает работать с файлами данных и логами напрямую, не используя буферы файловой системы.
Позволяет избежать двойной буферизации при работе с файлами данных и логов.

innodb_flush_method = O_DIRECT

Механизм буфера двойной записи (doublewrite) используется в InnoDB для того, чтобы удостовериться, что измененные страницы были записаны в файл данных. Этот механизм позволяет избежать потери данных при внезапном отключении сервера. Поскольку у ZFS есть свой механизм обеспечения целостности данных, буфер двойной записи можно отключить:

skip-innodb_doublewrite

Запись в файлы данных InnoDB должна осуществляться блоками по 16Кб, что соответствует размеру страницы, используемом в этом движке. Поскольку размер блока записи по-умолчанию составляет 128Кб, файлы данных нужно вынести на отдельную файловую систему.

innodb_data_home_dir=/var/db/mysql/ibdata
# zfs create data/mysql/ibdata
# zfs set recordsize=16K data/mysql/ibdata
# mv /var/db/mysql/ibdata1 /var/db/mysql/ibdata/

Тюнинг ZFS

База данных осуществляет чтение в произвольном порядке, который нельзя предсказать.
Отключение префетча позволяет избежать ненужных операций чтения. Добавим в /boot/loader.conf строку

vfs.zfs.prefetch_disable=1

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

# zfs set primarycache=metadata data/mysql/ibdata

См. также: MySQL на ZFS под FreeBSD: подготовка

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *