zoukankan      html  css  js  c++  java
  • MySQL--query-cache

    知识准备:

      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。

       

  • 相关阅读:
    [转载]DBA的特质第一部分:技术
    DPA/Ignite由于DNS问题导致连接不上被监控的数据库服务器
    ORACLE计算表引占用空间大小
    Reporting Services 错误案例一则
    SQL SERVER Transactional Replication中添加新表如何不初始化整个快照
    TNS-12540: TNS:internal limit restriction exceeded
    Error: 9001, Severity: 21, State: 5 The log for database 'xxxx' is not available
    ORA-01012: not logged on
    -bash: .bash_profile: command not found
    -bash: ulimit: pipe size: cannot modify limit: Invalid argument
  • 原文地址:https://www.cnblogs.com/JiangLe/p/5688266.html
Copyright © 2011-2022 走看看