Дилемма MysqlTunner и query_cache_size
На занятом сервере 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. Я ценю ваши советы по интерпретации рекомендаций и оптимизации настроек базы данных.
1 ответ
MySQL Query Cache Sizing - это запись в блоге, которая может оказаться вам полезной.
Сводка высокого уровня заключается в том, что как только размер query_cache становится больше определенного размера, MySQL тратит больше времени на управление кешем, чем на использование кеша. Каждая запись, которая влияет на результаты запроса, затем аннулирует результаты в кеше.
Если ваше приложение в основном читает базу данных, большой размер кеша запросов был бы полезен. Если у вашего приложения интенсивная запись, вы бы выиграли от меньшего объема кеша или его отсутствия вообще.
Обратите внимание, что есть много других постов в блогах, в которых обсуждаются большие размеры query_cache, но в конце все они говорят, что вы должны на самом деле протестировать настройки в вашей среде на предмет наилучших настроек.