知识准备:

  1、mysql 的query-cache是什么?

     mysql可以把执行完成的select 语句和这个select 语句对应的结果集缓存起来;下次再用调用相同的select 语句时就直接返回结果,不是又去执行一次select 语句。

由于少了执行的这一步,所以返回结果比较快。mysql为了保证缓存的结果集与再执行一次select 语句时返回的结果集是一致的,所以;mysql会去判断select语句

用到的表是不有变更,如果有那么缓存的结果集就作废,为了得到正确的结果mysql只能是把select 语句再执行一次;

  2、要注意的地方:

     1、query-cache 是在各个session之间共享的。

     2、query-cache 设置的过大那么它的维护成本也相应的变大,这个时候它反而会影响性能。

3、为了确认query-cache在当前业务场景下是否有用,最好的办法是测试;而且随着时间的推移,之前有用的query-cache不一定一直有用;

4、query-cache只有在select 语句完全相同而且表并没有变更的情况下才会从query-cache中返回结果集,注意这里的相同指的是字节序列

上的相同;也就是说select 和SELECT 会被当成两个不同的东西;select 和select 也有可能会被当成两个不同的东西,因为它们有可以用了

不同的字符集,而这一点我们人眼是看不出来的;

5、如果一个select 查询是某一查询的子查询,那么这个select 的结果也不会被缓存,也就是说query-cache只会缓存最终结果。

6、如果一个select 它是定义在stored function、event、trigger 中的那么它的结果集也不会被缓存。

7、就算是有可用的query-cache 结果集,用户的权限不对的话也不会有返回。

8、表的变更语句包括:insert ,update,delete,truncate table,alter table,drop table,drop database。

9、如果select 中包涵有不确定函数那么结果集也不会缓存。

配置query-cache:

    1、have_query_cache 这个variable 用来检测query_cache是否开启,注意如果是二进制包安装的mysql这个值会永远是YES;所以这并没有什么卵用。

    2、如果要关闭query_cache那么query_cache_size参数query_cache_type参数都要启动的时候设置为0。

    3、query_cache_limit 控制一个结果集的最大大小是多少。

    4、flush query cache 和reset query cache 用于清除query_cache ;它们两效果是等价的。

    5、如果一个查询走的是query-cache 那么Qcache_hits 这个status 会加1、不然Com_select会加1。

  

MySQL--query-cache的更多相关文章

  1. MySQL Query Cache 相关的问题

    最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考. 顾名思义,MySQL Query Cache 就是用来缓存和 Qu ...

  2. MySql Query Cache 优化

    query cache原理 当mysql接收到一条select类型的query时,mysql会对这条query进行hash计算而得到一个hash值,然后通过该hash值到query cache中去匹配 ...

  3. mysql query cache 查询缓存

    查看本博文,并进行验证(验证结果与博文一致): https://blog.csdn.net/carmazhao/article/details/7088530 mysql默认是开启查询缓存的. 设置查 ...

  4. MySQL 之 query cache

    早上一打开网站,就看到了Percona官网发布的最新的关于 mysql query cache的文章: https://www.percona.com/blog/2015/08/07/mysql-qu ...

  5. MySQL Troubleshoting:Waiting on query cache mutex 腾讯数据库工程师:幕南风

    http://blog.itpub.net/26515977/viewspace-1208188/           今天被MySQL Query Cache 炕了.线上大量 Waiting on ...

  6. MySQL Troubleshoting:Waiting on query cache mutex

    今天被MySQL Query Cache 炕了.线上大量 Waiting on query cache mutex 那么什么是 Query Cache? QC 缓存的是整个SELECT的结果集.而非执 ...

  7. mysql之Query Cache

    1,QueryCache的实现原理: 1.目前只有select语句会被cache,其他类似show,use的语句则不会被cache. 2.两个SQL语句,只要相差哪怕是一个字符(例如大小写不一样:多一 ...

  8. 1011MySQL Query Cache学习笔记

    转自:http://blog.chinaunix.net/uid-16844903-id-321156.html 测试环境 MySQL 5.5 innodb_version 1.1.6 MySQL Q ...

  9. 011-MySQL Query Cache 查询缓存设置操作

    一.概述 MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, ...

  10. MySQL 缓存 Query Cache

    QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...

随机推荐

  1. 操作系统对的IIS版本

    IIS版本 Windows版本 备注 IIS 1.0 Windows NT 3.51 Service Pack 3   IIS 2.0 Windows NT 4.0   IIS 3.0 Windows ...

  2. Unix/Linux环境C编程入门教程(42) 终端控制篇

    函数介绍 getopt(分析命令行参数) 相关函数 表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ...

  3. C++ builder 生成以管理员身份运行的exe

    转自:http://bbs.csdn.net/topics/310225109#post-312177603 ,稍微做了一点修改 创建一个文本文件,命名为123.manifest,内容如下: < ...

  4. Deploy a Sharded Cluster

    Start the Config Server Database Instances for example :  mongod --configsvr --dbpath <path> - ...

  5. 杭电1142(最短路径+dfs)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  6. postGreSQL数据库部署及简单使用

    1,deployByRuiyIns rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.no ...

  7. 【转】Linux awk命令详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  8. FZU 2102 Solve equation(水,进制转化)&& FZU 2111(贪心,交换使数字最小)

    C Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pra ...

  9. ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用)

    一.背景说明 通过调用GP服务,Android客户端也能实现专业的.复杂的GIS分析处理功能,从而增加应用的实用价值. ArcGIS Server发布的GP服务,分为同步和异步两种类型,一般执行步骤较 ...

  10. 【Oracle】逻辑结构(TableSpace→Segment→Extent→Block)

     一.逻辑体系结构图 二.逻辑结构图组成介绍 从上表能够看出,一个数据库是由多个表空间(tablespace)组成,一个表空间又由多个段(segment)组成,一个段又由多个区(extent)组成 ...