mysql 5.6 缓存_为什么默认情况下从MySQL 5.6开始禁用query_cache_type?

您需要InnoDB的历史才能理解原因.它来了:

战争故事

InnoDB和查询缓存处于不断的战争状态.在检查InnoDB缓冲池中的更改然后交叉检查查询缓存以进行相同更改时,InnoDB往往非常苛刻.

和平条约

在MySQL 5.0之前,InnoDB禁用了查询缓存.现在,InnoDB与它进行交互.为了简化问题,您可以通过将query_cache_size设置为0来禁用查询缓存.

If the server is started with 07002 set to 0, it does not acquire the query cache mutex at all, which means that the query cache cannot be enabled at runtime and there is reduced overhead in query execution.

转移条款

将query_cache_size设置为0并非一刀切的解决方案.

首先,战争的原因是开销. InnoDB将始终检查更改.更大的查询缓存将使InnoDB更加困难.禁用查询缓存让InnoDB和Query Cache感到高兴.但是,即使有这样的和平条约,你(开发人员/ DBA)也可能成为这场战争的牺牲品.

取决于以下内容

>工作量

>变化的频率

>读取相同数据的频率

你应该将query_cache_size设置为你认为提高性能的任何数字(这相当于开始地下运动).

结语

如果你想知道我在哪里提出这个战争故事,请看我的旧帖子

我建议之前禁用查询缓存

注意:我意识到问题是关于query_cache_type.它确实对查询缓存有影响.禁用缓存会压制InnoDB对它的支配地位.手动设置query_cache_type只会强制Developer / DBA仔细考虑查询缓存将遇到的查询类型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值