Query Cache Configuration

Query Cache Configuration


have_query_cache 系统变量表明 是否query cache是可用的:


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


当使用一个标准的MySQL binary,这个值总是YES,甚至如果query caching is disabled.


其他几个系统变量控制查询cache 操作,那么可以设置在一个选项文件或者在命令行 当启动mysqld时。


query cache 系统变量 有很多以query_cache_开头的。


设置query cache size,设置query_cache_size 系统变量  设置为0 是关闭query cache,


同时设置 query_cache_type=0. 

默认,query cache 是关闭的,这是通过一个默认的1mb大小 和 query_cache_type 是0


mysql> SHOW VARIABLES LIKE 'query_cache_%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 1048576 |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+
5 rows in set (0.00 sec)

减少开销,设置query_cache_type=0 如果你不使用query cache


注意:

当使用Windows 配置向导安装或者配置MySQL, 默认值对于query_cache_size 是自动配置 对于你基于不同的配置选项

当使用Windows配置向导,query cache 可以是启动的( 也就是说,是一个非0值)由于选择的配置选项。


query cache 也是通过设置query_cache_type variable设置


当你设置 query_cache_size 为一个非0值, 记住query cache 需要一个最小40KB 分配它的结构


query_cache_size 的值是对齐到接近1024 字节block.


因此 显示的值可能不同于你分配的值


如果query cache是大于0, query_cache_type 变量影响它的工作,变量可以设置为下面的值:


1. 值为0或者OFF 防止caching或者从cached 结果中检索


2. 值为1或者ON 启用caching 除了那些语句 以SELECT SQL_NO_CACHE 开始

3. 值为2或者DEMAND  导致caching 那些语句 以SELECT SQL_CACHE开头的


如果query_cache_size 是0, 你也应该设置query_cache_type variable为0

在这种情况下, server 不需要query cache mutex,这意味着query cache 不能被启用 


设置 全局query_cache_type value  决定query cache 行为对于所有的客户端连接在改变值后。


单个的客户端可以控制cache 行为对于它们自己的连接通过设置 SESSION query_cache_type value.

对于客户端, 一个客户端 可以禁用query cache 对于它自己的查询:


mysql> SET SESSION query_cache_type = OFF;

如果设置query_cache_type 在server 启动阶段( 相比在运行时使用一个SET 语句),只有数字值是允许的


控制 单个 查询结果的最大值 是可以被cached,设置query_cache_limit 系统变量,默认值是1MB


小心 不要设置 cache太大,由于需要用于threads 来锁定cache 在更新时,你可能会看到lock 冲突问题在一个大的cache里

原文地址:https://www.cnblogs.com/hzcya1995/p/13349944.html