Сброс страниц 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
Переменная системы 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.
Сброс страниц с помощью многопоточных потоков сброса
Функция многопоточного сброса 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
См. также
© 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/