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

Стоит ли увеличивать кеш MySQL?

Я попытался запустить tuningprimer.sh, чтобы настроить мои настройки mysql. Я уже несколько раз увеличивал кеш запросов mysql до нынешних 2 ГБ, но этого все еще недостаточно, согласно результатам тестов:

> QUERY CACHE Query cache is enabled Current query_cache_size = 2.00 G
> Current query_cache_used = 1.72 G Current query_cache_limit = 8 M
> Current Query cache Memory fill ratio = 86.22 % Current
> query_cache_min_res_unit = 4 K However, 3906616 queries have been
> removed from the query cache due to lack of memory Perhaps you should
> raise query_cache_size MySQL won't cache query results that are larger
> than query_cache_limit in size

Как видите, 3,9 млн запросов были удалены из кеша из-за его размера. Боюсь индексировать такой большой кеш. Я имею в виду, что, возможно, поиск в таком большом файле кеша может занять больше времени и ресурсов, чем выполнение самого запроса.

Что вы думаете ? Стоит ли мне увеличивать кеш mysql?

Кстати: сервер запускает Litespeed + mysql + php 5.3 и имеет 24 ГБ ОЗУ, текущее использование памяти составляет 12 ГБ

Если у вас есть много довольно маленьких наборов результатов для кеширования, ваш query_cache_min_res_unit может быть установлен слишком большим. Поскольку query_cache_min_res_unit - это минимальный размер выделения для кэшированного набора результатов, даже с 2 ГБ кэша запросов вы не сможете сохранить более 512 000 результатов. Взгляните на переменные Qcache_total_blocks и Qcache_queries_in_cache из вывода SHOW STATUS LIKE '%qcache%';- если вы видите соотношение около 1: 1, вам может быть полезно понизить значение query_cache_min_res_unit.

Проблемы с конфликтом блокировок по-прежнему будут проблемой, но вы увидите достижение предела, когда "SHOW PROCESSLIST" перечислит чрезмерное количество процедур "Ожидание блокировки кеша запроса".

В документы сказать:

«Будьте осторожны, чтобы не установить слишком большой размер кеша. Из-за того, что потокам необходимо блокировать кеш во время обновлений, вы можете столкнуться с проблемами конкуренции за блокировку с очень большим кешем».

Имейте в виду, что это не определяет, что такое очень большой ... Изменить: глядя на это ошибка Я думаю, что вы находитесь на территории очень большой.

Если это поисковая служба, возможно, вам стоит подумать о чем-то вроде Solr?

Вы можете прочитать это: http://www.percona.com/files/presentations/MySQL_Query_Cache.pdf прежде, чем вы начнете использовать огромный кеш. У меня была база данных mysql объемом 850 ГБ, в которой в основном хранились демографические данные, а мой кеш запросов составлял 32 МБ на основе моего плана запроса.

Я начал с большого кеша, и после нескольких лет использования mysql с большой настройкой производительности и очисткой запросов я отбросил его до 32M, и он работал хорошо.

В «High performance Mysql» также есть отличная глава о кешировании запросов.

Ссылки:

http://www.percona.com/files/presentations/MySQL_Query_Cache.pdf