На загруженном сервере mysql MySQLTuner 1.2.0 всегда рекомендует добавлять query_cache_size независимо от того, как я увеличиваю значение (я пробовал до 512 МБ). С другой стороны, он предупреждает, что:
Increasing the query_cache size over 128M may reduce performance
Вот последние результаты:
>> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.25-1~dotdeb.0-log
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in InnoDB tables: 6G (Tables: 195)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 51
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 1d 19h 17m 8s (254M q [1K qps], 5M conn, TX: 139B, RX: 32B)
[--] Reads / Writes: 89% / 11%
[--] Total buffers: 24.2G global + 92.2M per thread (1200 max threads)
[!!] Maximum possible memory usage: 132.2G (139% of installed RAM)
[OK] Slow queries: 0% (2K/254M)
[OK] Highest usage of available connections: 32% (391/1200)
[OK] Key buffer size / total MyISAM indexes: 128.0M/92.0K
[OK] Key buffer hit rate: 100.0% (8B cached / 0 reads)
[OK] Query cache efficiency: 79.9% (181M cached / 226M selects)
[!!] Query cache prunes per day: 1033203
[OK] Sorts requiring temporary tables: 0% (341 temp sorts / 4M sorts)
[OK] Temporary tables created on disk: 14% (760K on disk / 5M total)
[OK] Thread cache hit rate: 99% (676 created / 5M connections)
[OK] Table cache hit rate: 22% (1K open / 8K opened)
[OK] Open file limit used: 0% (49/13K)
[OK] Table locks acquired immediately: 99% (64M immediate / 64M locks)
[OK] InnoDB data size / buffer pool: 6.1G/19.5G
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Reduce your overall MySQL memory footprint for system stability
Increasing the query_cache size over 128M may reduce performance
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_size (> 192M) [see warning above]
Сервер имеет оперативную память 76 ГБ и двойной E5-2650. Нагрузка обычно ниже 2. Я ценю ваши советы по интерпретации рекомендаций и оптимизации конфигураций базы данных.
Размер кэша запросов MySQL это запись в блоге, которая может вам пригодиться.
Резюме высокого уровня состоит в том, что как только query_cache превышает определенный размер, MySQL тратит больше времени на управление кешем, чем на использование кеша. Каждая запись, которая влияет на результаты запроса, делает недействительными результаты в кэше.
Если ваше приложение в основном читает базу данных, тогда будет полезен большой размер кеша запросов. Если ваше приложение интенсивно записывает, вы выиграете от меньшего объема кеша или от его отсутствия вообще.
Обратите внимание, что есть много других сообщений в блогах, в которых обсуждаются большие размеры query_cache, но, в конце концов, все они говорят, что вам нужно фактически протестировать настройки в своей среде для получения наилучших настроек.