Назад | Перейти на главную страницу

Как я могу уменьшить одностраничное чтение MySQL?

Размер моего буферного пула innodb составляет 8 ГБ, а моя база данных - 6 ГБ, но я вижу следующее:

Innodb_buffer_pool_reads 263,5 КБ - количество логических чтений, которые InnoDB не смогла выполнить из пула буферов и которые должны были выполнить чтение одной страницы.

С оборудованием (i7, 24 ГБ ОЗУ, SSD) и таким объемом доступной ОЗУ, почему запросы вообще выполняют «чтение одной страницы»?

Как я могу уменьшить это количество одностраничных чтений?

почему запросы вообще выполняют "чтение одной страницы?"

Потому что страницы должны быть прочитаны в буферный пул хотя бы один раз, прежде чем они станут доступными для движка. Глядя на ваши числа, 263 500 прочтений составят

263,500 pages x 16 KB/page = 4,216,000 KB read

что даже не так много, как размер вашей базы данных. Кроме того, по сравнению с вашими 3 500 000 000 innodb_buffer_pool_read_requests это крошечное число - в вашем случае практически все обслуживается из пула буферов без дискового ввода-вывода.

Значит, эти числа не в байтах… а в количестве запросов… По математике кажется, что у вас очень мало данных, и это хорошо. Математика

(Innodb_buffer_pool_read_requests / Innodb_buffer_pool_reads) * 100

Если это число меньше 1, значит, вы в хорошей форме. Еще один хороший способ узнать, нужно ли вам больше памяти для пула, - это

SHOW ENGINE INNODB STATUS;

Вверху вы увидите это

Buffer pool hit rate 1000 / 1000, young-making rate 1 / 1000 not 0 / 1000

Если вы близки к 1000/1000, это хорошо. Все, что ниже 900/1000, я бы начал добавлять больше памяти.