Я использую сервер с 24 ГБ оперативной памяти. Единственное, что здесь работает, - это сервер MySQL, настроенный как Master.
Когда я проверяю память с помощью команды free -m, я получаю следующее:
total used free shared buffers cached
Mem: 24158 24027 131 0 131 23050
Прибл. 23 ГБ находится в кеше. Что мне кажется большим.
Я также установил кеширование на 0 в my.cnf
query_cache_size = 0
Как я могу проверить, что именно кешируется? Также перезапуск mysql не очищает кеш. А flush tables
тоже не помогло.
Вы смотрите на два разных тайника. free -m
сообщает вам, сколько памяти используется операционной системой для дискового кеша, а не сколько MySQL использует для кеша базы данных. И операционная система должен использовать как можно больше памяти для дискового кеша - почему бы вам не захотеть как можно больший кеш? Эта память всегда доступна для использования, если она требуется приложению. Видеть Вот за хорошее обсуждение использования памяти Linux для кеширования.
Это означает, что почти вся память используется ядром для кэширования данных. У вас, вероятно, почти простаивающая система, поэтому это не имеет большого значения, но для ее оптимизации вы должны посмотреть конфигурацию mysql ...
Если вы думаете, что можете извлечь выгоду из кеширования запросов, включите его и дайте ему, например, 128 МБ. Затем вы можете проверить в mysql, как он используется. Если вы выполняете в основном запросы SELECT и не так много INSERT / UPDATE, кеш запросов может вам подойти. Он очень редко вызывает проблемы, поэтому можете спокойно оставить его включенным.
Затем, если вы используете механизм хранения MyISAM, следует включить некоторую память с помощью переменной kay_buffer. Если вы используете InnoDB, общий совет - отдать 50-80% доступной памяти innodb_buffer_pool_size (если это выделенный сервер mysql). Mysql и InnoDB лучше знают, что именно кэшировать, чем ядро Linux.
Для освобождения кешей mysql (чтения), я думаю, помогает только перезапуск mysql. Чтобы освободить системные кеши, используйте команду:
echo 3 > /proc/sys/vm/drop_caches