Que*_*low 3 mysql mariadb query-cache
我测试了几个简单的查询,如下所示:
SELECT COUNT(*) FROM Users WHERE courses='a';
Run Code Online (Sandbox Code Playgroud)
但没有一个被缓存。以下是缓存相关变量:
show variables like "%cache%";
+-------------------------------+----------------------+
| Variable_name | Value |
+-------------------------------+----------------------+
| aria_pagecache_age_threshold | 300 |
| aria_pagecache_buffer_size | 100000000 |
| aria_pagecache_division_limit | 100 |
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache | YES |
| join_cache_level | 2 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| key_cache_segments | 0 |
| max_binlog_cache_size | 18000000000000000000 |
| max_binlog_stmt_cache_size | 18000000000000000000 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_strip_comments | OFF |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 400 |
| table_open_cache | 400 |
| thread_cache_size | 0 |
+-------------------------------+----------------------+
Run Code Online (Sandbox Code Playgroud)
缓存相关状态显示:
show status like "%cache%";
+-----------------------------------+-------+
| Variable_name | Value |
+-----------------------------------+-------+
| Aria_pagecache_blocks_not_flushed | 0 |
| Aria_pagecache_blocks_unused | 15737 |
| Aria_pagecache_blocks_used | 2 |
| Aria_pagecache_read_requests | 78 |
| Aria_pagecache_reads | 3 |
| Aria_pagecache_write_requests | 6 |
| Aria_pagecache_writes | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Com_assign_to_keycache | 0 |
| Qcache_free_blocks | 0 |
| Qcache_free_memory | 0 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 0 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 0 |
| Ssl_callback_cache_hits | 0 |
| Ssl_session_cache_hits | 0 |
| Ssl_session_cache_misses | 0 |
| Ssl_session_cache_mode | NONE |
| Ssl_session_cache_overflows | 0 |
| Ssl_session_cache_size | 0 |
| Ssl_session_cache_timeouts | 0 |
| Ssl_used_session_cache_entries | 0 |
| Subquery_cache_hit | 0 |
| Subquery_cache_miss | 0 |
| Threads_cached | 0 |
+-----------------------------------+-------+
Run Code Online (Sandbox Code Playgroud)
我已阅读手册并检查是否满足以下条件:
它不是以下形式:
SELECT SQL_NO_CACHE ... SELECT ... INTO OUTFILE ... SELECT ... INTO DUMPFILE ... SELECT ... FOR UPDATE SELECT * FROM ... WHERE autoincrement_column IS NULL SELECT ... 锁定共享模式
我唯一不确定的是:
我运行SHOW FULL COLUMNS FROM Users;并且所有列都包含“选择、插入、更新”。即使是新创建的表也包含这些权限。谁能解释一下可能出了什么问题?
你错过了一件事。
query_cache_size | 0
Run Code Online (Sandbox Code Playgroud)
要设置查询缓存的大小,请设置
query_cache_size系统变量。将其设置为 0 将禁用查询缓存,设置query_cache_type=0 也是如此。https://dev.mysql.com/doc/refman/5.6/en/query-cache-configuration.html
尽管已启用,但查询缓存大小默认为 0KB,这会有效禁用查询缓存。通过设置 > 40KB 的数量来启用它
https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_size
| 归档时间: |
|
| 查看次数: |
3515 次 |
| 最近记录: |