Скрипт mysqltuner.pl
дает мне следующую рекомендацию:
query_cache_limit (> 1M, or use smaller result sets)
И выходные данные состояния MySQL показывают:
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| Qcache_free_blocks | 12264 |
| Qcache_free_memory | 1001213144 |
| Qcache_hits | 3763384 |
| Qcache_inserts | 54632419 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 6656246 |
| Qcache_queries_in_cache | 55280 |
| Qcache_total_blocks | 122848 |
+-------------------------+------------+
8 rows in set (0.00 sec)
Из выходных данных состояния выше, как я могу судить, требуется или нет предлагаемое увеличение query_cache_limit
?
Лучше всего создать некий тестовый харнесс, который выполняет реалистичную (определенную вашим сценарием) нагрузку на вашу базу данных, а затем запустить этот тест против MySql с различными настройками. Настройка - это такое искусство, что очень трудно дать исчерпывающий ответ, не зная ваших точных потребностей.
From http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html:
The
Qcache_free_memory
counter дает представление о свободной памяти. Наблюдаемые низкие объемы по сравнению с общим выделенной для кэша, может указывать на недостаточный размер кэша, который может быть устранить, изменив глобальную variablequery_cache_size
.
Qcache_hits
иQcache_inserts
показывают количество раз, когда запрос был обслуживался из кэша и сколько запросов было вставлено в кэш. Низкое соотношение количества просмотров и вставок указывает на незначительное повторное использование запросов или слишком низкое значение параметраquery_cache_limit
, который служит для регулирует объем оперативной памяти, выделенной для каждого отдельной записи кэша запросов. Большие большие наборы результатов запросов потребуют больших настройки этой переменной.Еще одним показателем плохого повторного использования запросов является увеличение
Qcache_lowmem_prunes
значение. Это указывает на то, как часто MySQL приходилось удалять запросы из кэша для использования входящих запросов. Другие причины увеличения числаQcache_lowmem_prunes
являются недостаточный размер кэша, который не может вместить необходимое количество SQL-запросов и наборов результатов, и фрагментация памяти в кэше, которые могут быть уменьшены путем выпускаFLUSH QUERY CACHE
оператора. Вы можете удалить все запросы из кэша с помощью командыRESET QUERY
CACHE
.Счетчик
Qcache_not_cached
предоставляет представление о количестве операторов выполненных в MySQL, которые не были кэшируемыми, потому что либо были не-SELECT, либо из-за того, что явный запрет на ввод с помощьюSQL_NO_CACHE
hint.
Ваше соотношение хитов к вставкам составляет примерно 1:15 или 6%, так что похоже, что ваши настройки можно немного подправить (хотя, как я уже сказал, вы лучший судья в этом вопросе, поскольку лучше всего знаете свои требования).