zoukankan      html  css  js  c++  java
  • mysql查询缓存

    http://www.cnblogs.com/iixiaowei/articles/2341716.html

    MySQL查询缓存设置 提高MySQL查询性能

    发表于102 天前 ⁄ MySQL优化 ⁄ 暂无评论

    从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间,非常有用。

    打开查询缓存,是通过几个步骤来设置的,例如:虽然你设置Mysql允许查询缓存,但是如果你设置的查询缓存大小为了0,这和没有允许没什么区别。所以必须是几个步骤的设置才能真正打开查询缓存这个功能。

    下面我用 mysql6.0 最为演示最常用的设置查询缓存
    第一: query_cache_type 使用查询缓存的方式
    一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON

    1. mysql> select @@query_cache_type;

    +——————–+
    | @@query_cache_type |
    +——————–+
    | ON |
    +——————–+
    这样 当我们执行 select id,name from tableName; 这样就会用到查询缓存。在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明select sql_no_cache id,name from tableName;当然也可以禁用查询缓存: mysql> set session uery_cache_type=off;
    这里我们不讨论这个,我们演示常用的设置。
    第二: 系统变量 have_query_cache 设置查询缓存是否可用

    1. mysql> show variables like 'have_query_cache';

    +——————+——-+
    | Variable_name | Value |
    +——————+——-+
    | have_query_cache | YES |
    +——————+——-+
    上面的显示,表示设置查询缓存是可用的。
    第三: 系统变量 query_cache_size
    表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0,
    那么 第一步 和 第二步 起不到作用,还是没有任何效果。

    1. mysql> select @@global.query_cache_size;

    +—————————+
    | @@global.query_cache_size |
    +—————————+
    | 16777216 |
    +—————————+
    上面是 mysql6.0设置默认的,之前的版本好像默认是0的,那么就要自己设置下。
    设置 set @@global.query_cache_size=1000000; 这里是设置1M左右,900多K。
    再次查看下 select @@global.query_cache_size;
    +—————————+
    | @@global.query_cache_size |
    +—————————+
    | 999424 |
    +—————————+
    显示我们设置新的大小,表示设置成功。
    第四: query_cache_limit 控制缓存查询结果的最大值
    例如: 如果查询结果很大, 也缓存????这个明显是不可能的。
    MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会
    进行缓存。缺省为1M,也就是超过了1M查询结果就不会缓存。

    1. mysql> select @@global.query_cache_limit;

    +—————————-+
    | @@global.query_cache_limit |
    +—————————-+
    | 1048576 |
    +—————————-+
    这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set重新指定大小。
    好了,通过4个步骤就可以 打开了查询缓存,具体值的大小和查询的方式 这个因不同的情况来指定了。
    有关MySQL查询缓存更详细的介绍请看:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#query-cache
    转自:http://hi.baidu.com/aganle/blog/item/49e4703983110b2cb9998f7c.html

    http://blog.sina.com.cn/s/blog_6e27a45f01015oyk.html

    MYSQL SQL_NO_CACHE的真正含义

    当我们想用SQL_NO_CACHE来禁止结果缓存时发现结果和我们的预期不一样,查询执行的结果仍然是缓存后的结果。其实,SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。
     
    SQL_NO_CACHE means that the query result is not cached. It does not mean
    that the cache is not used to answer the query.

    You may use RESET QUERY CACHE to remove all queries from the cache and
    then your next query should be slow again. Same effect if you change
    the table, because this makes all cached queries invalid.
     

    mysql> select count(*) from users where email = 'hello';
    +----------+
    | count(*) |
    +----------+
    | 0 |
    +----------+
    1 row in set (7.22 sec) 

     
    mysql> select count(*) from users where email = 'hello';
    +----------+
    | count(*) |
    +----------+
    | 0 |
    +----------+
    1 row in set (0.45 sec)

    mysql> select count(*) from users where email = 'hello';
    +----------+
    | count(*) |
    +----------+
    | 0 |
    +----------+
    1 row in set (0.45 sec)

    mysql> select SQL_NO_CACHE count(*) from users where email = 'hello';
    +----------+
    | count(*) |
    +----------+
    | 0 |
    +----------+
    1 row in set (0.43 sec)
  • 相关阅读:
    Tomcat 配置用户认证服务供C#客户端调用
    Solr与HBase架构设计
    一个自定义MVP .net框架 AngelFrame
    Dell R720上的系统安装问题的解决办法(关于RAID建立磁盘阵列的技术)
    中文分词器性能比较
    关于RabbitMQ关键性问题的总结
    js基本类型与引用类型,浅拷贝和深拷贝
    sass初学入门笔记(一)
    Emmet插件比较实用常用的写法
    今天发现新大陆:haml和Emmet
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/3517706.html
Copyright © 2011-2022 走看看