
Я только что прочитал, что неправильная конфигурация innodb_buffer_pool_size может вызвать подкачку на уровне ОС. Кто-нибудь знает, как это может произойти и как это предотвратить? В настоящее время я использую CentOS 4 и MySQL 5.0.41
решение1
Местоопция блокировки памятив my.cnf. В CentOS5 SELinux предотвращал блокировку процесса mysqld в памяти, и мне пришлось создать свой собственный модуль, чтобы включить это.
Другая возможность — использоватьБольшие страницы, который всегда находится в памяти. Вы должны помнить, что нужно поместить ulimit -l unlimited
в скрипт запуска mysqld
решение2
Проще говоря, чтобы избежать подкачки, вам нужно сделать размер буфера достаточно маленьким, чтобы он полностью помещался в памяти вместе со всем остальным, для чего ОС использует память. Если общие требования к памяти становятся больше, чем физическая память, она выгружается. Если у вас нет места подкачки, что-то должно сломаться.
решение3
Если на вашей машине включена подкачка и буферные пулы больше, чем физическая оперативная память, то это приведет к выгрузке данных на диск для освобождения оперативной памяти для буферных пулов. Предотвратите это, отключив подкачку или убедившись, что mysql никогда не будет потреблять достаточно физической оперативной памяти для выгрузки.