MysqlTunner e query_cache_size dilema

1

Em um servidor mysql ocupado, MySQLTuner 1.2.0 sempre recomenda adicionar query_cache_size, não importa como eu aumente o valor (tentei até 512MB). Por outro lado, adverte que:

Increasing the query_cache size over 128M may reduce performance

Aqui estão os últimos resultados:

 >>  MySQLTuner 1.2.0 - Major Hayden <[email protected]>
 >>  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]

O servidor tem 76GB de RAM e dual E5-2650. A carga é geralmente abaixo de 2. Agradeço suas dicas para interpretar a recomendação e otimizar as configurações do banco de dados.

    
por wbad 11.10.2012 / 01:29

1 resposta

4

O tamanho do cache de consulta do MySQL é uma entrada de blog que você pode achar útil.

Um resumo de alto nível é que, uma vez que o query_cache fica acima de um certo tamanho, o MySQL gasta mais tempo gerenciando o cache do que usando o cache. Toda gravação que afeta os resultados de uma consulta invalida os resultados no cache.

Se seu aplicativo estiver lendo principalmente o banco de dados, um tamanho de cache de consulta grande seria benéfico. Se seu aplicativo é pesado para gravação, você se beneficiaria de um cache mais baixo ou nenhum cache.

Note que existem muitos outros posts discutindo grandes tamanhos de query_cache, mas no final todos eles dizem que você tem que testar as configurações em seu ambiente para a melhor configuração.

    
por 11.10.2012 / 01:54