Spec-Zone.ru › MariaDB

Сброс страниц InnoDB

Сброс страниц с помощью потоков очистителя страниц InnoDB

Потоки очистки страниц InnoDB сбрасывают грязные страницы из буфера пула InnoDB. Эти грязные страницы сбрасываются с помощью алгоритма наименее часто используемого (LRU).

innodb_max_dirty_pages_pct

Переменная innodb_max_dirty_pages_pct определяет максимальный процент не записанных (грязных) страниц в буфере пула. Если этот процент превышен, выполняется сброс.

innodb_max_dirty_pages_pct_lwm

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

  • доля грязных страниц не превышает innodb_max_dirty_pages_pct
  • возраст последнего контрольного пункта (разница LSN с момента последнего контрольного пункта) не превышает innodb_log_file_size (минус некоторый запас)
  • буфер пула не заполнен, что может привести к сбросу вытеснения

Обратите внимание, что в MariaDB 10.5.7 и MariaDB 10.5.8 сброс был более агрессивным, и поток очистителя страниц всегда выполнялся в фоновом режиме, пока в буфере пула были грязные страницы. Чтобы сделать сброс более активным, установите более высокое значение, например SET GLOBAL innodb_max_dirty_pages_pct_lwm=0.001; (по умолчанию до MariaDB 10.2.1).

Сброс страниц с помощью нескольких потоков очистителя страниц InnoDB

MariaDB 10.2.2 - 10.5.1

Переменная системы innodb_page_cleaners была добавлена в MariaDB 10.2.2 и позволяет использовать несколько потоков очистки страниц InnoDB. Она устарела и игнорируется начиная с MariaDB 10.5.1, так как первоначальные причины разделения буфера пула в основном исчезли.

Количество потоков очистки страниц InnoDB можно настроить, задав переменную системы innodb_page_cleaners. Эту переменную системы можно задать в группе параметров сервера в файле параметров перед запуском сервера. Например:

[mariadb]
...
innodb_page_cleaners=8

В MariaDB 10.3.3 и более поздних версиях эту переменную системы также можно изменить динамически с помощью SET GLOBAL. Например:

SET GLOBAL innodb_page_cleaners=8;

Значение по умолчанию этой переменной системы равно 4 или настроенному значению переменной системы innodb_buffer_pool_instances, в зависимости от того, какое из них меньше.

Сброс страниц с помощью одного потока очистителя страниц InnoDB

В MariaDB 10.2.1 и ранее, и начиная с MariaDB 10.5.1, когда первоначальные причины разделения буфера пула в основном исчезли, поддерживается только один поток очистителя страниц InnoDB.

Сброс страниц с помощью многопоточных потоков сброса

MariaDB 10.1.0 - 10.3.2

Функция многопоточного сброса InnoDB была впервые добавлена в MariaDB 10.1.0. Она была устаревшей в MariaDB 10.2.9 и удалена в MariaDB 10.3.2.

В MariaDB 10.3.1 и более ранних версиях можно использовать функцию многопоточного сброса InnoDB. Это особенно полезно в MariaDB 10.1, которая поддерживает только один поток очистки страниц.

Функцию многопоточного сброса InnoDB можно включить, задав переменную системы innodb_use_mtflush. Количество потоков можно настроить, задав переменную системы innodb_mtflush_threads. Эту переменную системы можно задать в группе параметров сервера в файле параметров перед запуском сервера. Например:

[mariadb]
...
innodb_use_mtflush = ON
innodb_mtflush_threads = 8

Значение по умолчанию для переменной системы innodb_mtflush_threads равно 8. Максимальное значение равно 64. В системах с несколькими ядрами рекомендуется устанавливать его значение близким к настроенному значению переменной системы innodb_buffer_pool_instances. Однако рекомендуется также использовать собственные тесты производительности для определения подходящего значения для конкретного приложения.

Функция многопоточного сброса InnoDB была устаревшей в MariaDB 10.2.9 и удалена из MariaDB 10.3.2. В более поздних версиях MariaDB используйте несколько потоков очистки страниц InnoDB вместо этого.

Настройка емкости ввода-вывода InnoDB

Увеличение объема емкости ввода-вывода, доступной для InnoDB, также может помочь повысить производительность сброса страниц.

Объем емкости ввода-вывода, доступной для InnoDB, можно настроить, задав переменную системы innodb_io_capacity. Эту переменную системы можно изменить динамически с помощью SET GLOBAL. Например:

SET GLOBAL innodb_io_capacity=20000;

Эту переменную системы также можно задать в группе параметров сервера в файле параметров перед запуском сервера. Например:

[mariadb]
...
innodb_io_capacity=20000

Максимальный объем емкости ввода-вывода, доступной для InnoDB в экстренных ситуациях, по умолчанию равен 2000 или удвоенному значению innodb_io_capacity, в зависимости от того, какое из них больше, или может быть напрямую настроено путем задания переменной системы innodb_io_capacity_max. Эту переменную системы можно изменить динамически с помощью SET GLOBAL. Например:

SET GLOBAL innodb_io_capacity_max=20000;

Эту переменную системы также можно задать в группе параметров сервера в файле параметров перед запуском сервера. Например:

[mariadb]
...
innodb_io_capacity_max=20000

См. также

  • Значительный прирост производительности при использовании новой сжатия страниц MariaDB на FusionIO
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией 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/innodb-page-flushing/

Spec-Zone.ru

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