O cache de consulta do MySQL está ativado, mas não está sendo usado

2

Verifiquei se o cache de consulta está ativado

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
1 row in set (0.00 sec)

Mas parece que não está sendo usado

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 16759648 |
| Qcache_hits             | 0        |
| Qcache_inserts          | 0        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 21555882 |
| Qcache_queries_in_cache | 0        |
| Qcache_total_blocks     | 1        |
+-------------------------+----------+
8 rows in set (0.00 sec)

Qualquer motivo?

    
por Ryan 05.06.2014 / 09:55

4 respostas

2

A variável do sistema query_cache_type precisa ser definida como não-zero também, porque a presença do cache não significa que ele possa ser usado.

    
por 05.06.2014 / 10:09
1

Por favor, esteja ciente de que nem todas as consultas são armazenáveis em cache.

Por exemplo, se uma consulta contiver funções como NOW (), ela não será armazenada em cache. Por favor, encontre a descrição detalhada de quais consultas não podem ser armazenadas em cache: link

    
por 02.05.2017 / 03:23
0

Você também deve verificar em qual posição você escreveu suas configurações no arquivo de configuração.

Meu problema é que coloquei minhas configurações de qchace no final do arquivo. Embora as configurações tenham sido refletidas com a execução de mysql> SHOW STATUS LIKE 'Qcache%'; , nenhuma consulta foi armazenada em cache.

Após colocar as configurações em uma posição diferente no arquivo e reiniciar o servidor mysql, ele estava funcionando.

Aqui você pode ver minha configuração para o MySQL 5.6:

[mysqld]
bind-address=*
#skip-networking
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

query_cache_type = 1
query_cache_size =256M
thread_concurrency=2
sort_buffer_size=25M
key_buffer=128M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
    
por 26.03.2015 / 14:22
0

Houve um bug do MySQL 5.6 , corrigido em 5.6.9: " if the db name (or table name) has a '-' (minus), it does not work ", apenas no InnoDB.

    
por 21.01.2016 / 16:27