mysql查询缓存数据缓存,mysql查询缓存

查询缓存工作原理

mysql手册地址

一条查询语句在被解析之前,就会和查询缓存进行对比,查询的语句,必须完全相同,才会被查询缓存视为同一语句,不同的数据库,查询协议版本,或者字符集设置都被系统认为是不同语句。如下是两条不同的语句

SELECT * FROM tbl_name

Select * from tbl_name

当遇到如下情况时,不会进行缓存

It refers to user-defined functions (UDFs) or stored functions.

//用户自定义函数 或者存储函数

It refers to user variables or local stored program variables.

//用户参数 本地存储过程参数

It refers to tables in the mysql, INFORMATION_SCHEMA, or performance_schema database.

// 在mysql系统表中的数据

It refers to any partitioned tables.

// 分区表

It is of any of the following forms:

//以下的形式

-------

SELECT ... LOCK IN SHARE MODE

SELECT ... FOR UPDATE

SELECT ... INTO OUTFILE ...

SELECT ... INTO DUMPFILE ...

SELECT * FROM ... WHERE autoincrement_col IS NULL

-------

It uses TEMPORARY tables.

// 使用临时表

It does not use any tables.

//没有使用表

It generates warnings.

//产生了警告

The user has a column-level privilege for any of the involved tables.

// 用户在查询的表中有列的权限

当查询命中缓存后,mysql会增加query_hits 的值

当表被改变,查询缓存失效,并被移除。改变包括insert、update 、delete、 truncate table、 alter table、 drop table 和drop database

query_cache_type

mysql手册地址

The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0.

0 或 off

不缓存查询结果,也不从缓存中获取。 如果要取消查询缓存占用的内存空间,需要将 query_cache_size 设置为0

1 或 on

缓存所有可缓存的查询结果,如果不想缓存,在SELECT 后面加 SQL_NO_CACHE,例如 select sql_no cache * from table

2 或 demand

按需缓存,只缓存有 SQL_CACHE 的查询结果。

sql_cache 当在查询语句中出现时,且query_cache_type 设置为1 或者 2 ,查询结果被缓存

sql_no_cache 当在查询语句中出现时,服务器既不去缓存结果,也不去查询缓存

query_cache_size

设置缓存结果的内存空间大小,请设置高于40KB(启动mysql时,用于分配它的结构,具体大小根据系统而定),可设置为100m

如果设置 query_cache_size 为0,请同时将query_cache_type 设置为关闭,可以避免查询时,需要获取缓存大小,从而减少开销

不要将query_cache_size 设置过大,避免在更新缓存时,有线程丢失连接

query_cache_min_res_unit

系统默认设置为4kb,已满足大多数查询结果的大小

设置最小的缓存块,当mysql缓存一条语句的结果时,缓存完一个缓存块之后,才会重新分配一个新的缓存块。设置对于当前mysql大多数查询结果大小的合适的缓存大小,有助于提高缓存的利用率,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值