os:centos 6.8
mysql: 5.5.49
MySQL Query Cache 会缓存select 查询,但是在调优sql查询及测试数据库的性能时需要禁用该功能。
查看变量、状态
mysql> show global variables like '%cache%'; +------------------------------+----------------------+
| Variable_name | Value | +------------------------------+----------------------+
| binlog_cache_size | 8388608 |
| binlog_stmt_cache_size | 32768 | | have_query_cache | YES | | key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 | | key_cache_division_limit | 100 |
| max_binlog_cache_size | 536870912 | | max_binlog_stmt_cache_size | 18446744073709547520 | | metadata_locks_cache_size | 1024 |
| query_cache_limit | 4194304 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 134217728 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF | | stored_program_cache | 256 | | table_definition_cache | 400 | | table_open_cache | 400 | | thread_cache_size | 16 | +------------------------------+----------------------+ 18 rows in set (0.00 sec) mysql> show global status like '%cache%hit%'; +-------------------------+--------+
| Variable_name | Value | +-------------------------+--------+
| Qcache_hits | 552743 | | Ssl_callback_cache_hits | 0 |
| Ssl_session_cache_hits | 0 | +-------------------------+--------+
3 rows in set (0.00 sec)
注意参数 query_cache_size、query_cache_type
临时会话修改
mysql> set query_cache_type=0;
临时全局修改
mysql> set global query_cache_size=0;
mysql> set global query_cache_type=0;
永久修改
# vi my.cnf
query_cache_type=0
query_cache_size=0
还有一种方式是添加类似oracle的hint
select sql_no_cache count(*) from mysql.user;
mysql 5.5 文档上描述
Note
Query cache was deprecated in MySQL 5.7 and removed in MySQL 8.0 (and later).
参考:
https://dev.mysql.com/doc/refman/5.5/en/mysql-installer-workflow.html