深度解析MySQL查询缓存机制

MySQL查询缓存机制是MySQL数据库中的重要机制之一,下面将为您深入分析MySQL查询缓存机制,供您参考学习之用。

MySQL缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改 了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询。显然,这对于频繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有 大量相同sql查询的表,查询缓存会节约很大的性能。

查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的数据库、不同的协议版本或者不同 默认字符集的查询被认为是不同的查询并且分别进行缓存。

下面sql查询缓存认为是不同的:

  1. SELECT * FROM tbl_name  
  2. Select * from tbl_name  

查询缓存相关参数

  1. mysql> SHOW VARIABLES LIKE '%query_cache%';  
  2. +------------------------------+---------+  
  3. | Variable_name                | Value   |  
  4. +------------------------------+---------+  
  5. | have_query_cache             | YES     | --查询缓存是否可用  
  6. | query_cache_limit            | 1048576 | --可缓存具体查询结果的最大值  
  7. | query_cache_min_res_unit     | 4096    |   
  8. | query_cache_size             | 599040  | --查询缓存的大小  
  9. | query_cache_type             | ON      | --阻止或是支持查询缓存  
  10. | query_cache_wlock_invalidate | OFF     |   
  11. +------------------------------+---------+  

下面是一个简单的MySQL查询缓存机制例子:

  1. [mysql@csdba1850 ~]$ mysql -u root -p  
  2. Enter password:   
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  4. Your MySQL connection id is 3  
  5. Server version: 5.0.45-community MySQL Community Edition (GPL)  
  6.  
  7. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.  
  8.  
  9. mysql> set global query_cache_size = 600000; --设置缓存内存  
  10. Query OK, 0 rows affected (0.00 sec)  
  11.  
  12. mysql> set session query_cache_type = ON; --开启查询缓存  
  13. Query OK, 0 rows affected (0.00 sec)  
  14.  
  15. mysql> use test  
  16. Reading table information for completion of table and column names  
  17. You can turn off this feature to get a quicker startup with -A  
  18.  
  19. Database changed  
  20. mysql> show tables;  
  21. +----------------+  
  22. | Tables_in_test |  
  23. +----------------+  
  24. | animals        |   
  25. | person         |   
  26. +----------------+  
  27. 5 rows in set (0.00 sec)  
  28.  
  29. mysql> select count(*) from animals;  
  30. +----------+  
  31. | count(*) |  
  32. +----------+  
  33. |        6 |   
  34. +----------+  
  35. 1 row in set (0.00 sec)  
  36.  
  37. --Qcache_hits表示sql查询在缓存中命中的累计次数,是累加值。  
  38. mysql> SHOW STATUS LIKE 'Qcache_hits';  
  39. +---------------+-------+  
  40. | Variable_name | Value |  
  41. +---------------+-------+  
  42. | Qcache_hits   | 0     |  --0次  
  43. +---------------+-------+  
  44. 8 rows in set (0.00 sec)  
  45.  
  46. mysql>  select count(*) from animals;  
  47. +----------+  
  48. | count(*) |  
  49. +----------+  
  50. |        6 |   
  51. +----------+  
  52. 1 row in set (0.00 sec)  
  53.  
  54. mysql>  SHOW STATUS LIKE 'Qcache%';  
  55. +---------------+-------+  
  56. | Variable_name | Value |  
  57. +---------------+-------+  
  58. | Qcache_hits   | 1     | --表示sql在缓存中直接得到结果,不需要再去解析  
  59. +---------------+-------+  
  60. 8 rows in set (0.00 sec)  
  61.  
  62. mysql> select count(*) from animals;  
  63. +----------+  
  64. | count(*) |  
  65. +----------+  
  66. |        6 |   
  67. +----------+  
  68. 1 row in set (0.00 sec)  
  69.  
  70. mysql> select count(*) from animals;  
  71. +----------+  
  72. | count(*) |  
  73. +----------+  
  74. |        6 |   
  75. +----------+  
  76. 1 row in set (0.00 sec)  
  77.  
  78. mysql> SHOW STATUS LIKE 'Qcache_hits';  
  79. +---------------+-------+  
  80. | Variable_name | Value |  
  81. +---------------+-------+  
  82. | Qcache_hits   | 3     |    --上面的sql也是是从缓存中直接取到结果  
  83. +---------------+-------+  
  84. 1 row in set (0.00 sec)  
  85.  
  86. mysql> insert into animals select 9,'testsds' ; --插入数据后,跟这个表所有相关的sql缓存就会被清空掉  
  87. Query OK, 1 row affected (0.00 sec)  
  88. Records: 1  Duplicates: 0  Warnings: 0  
  89.  
  90. mysql> select count(*) from animals;  
  91. +----------+  
  92. | count(*) |  
  93. +----------+  
  94. |        7 |   
  95. +----------+  
  96. 1 row in set (0.00 sec)  
  97.  
  98. mysql> SHOW STATUS LIKE 'Qcache_hits';  
  99. +---------------+-------+  
  100. | Variable_name | Value |  
  101. +---------------+-------+  
  102. | Qcache_hits   | 3    |  --还是等于3,说明上一条sql是没有直接从缓存中直接得到的  
  103. +---------------+-------+  
  104. 1 row in set (0.00 sec)  
  105.  
  106. mysql> select count(*) from animals;  
  107. +----------+  
  108. | count(*) |  
  109. +----------+  
  110. |        7 |   
  111. +----------+  
  112. 1 row in set (0.00 sec)  
  113.  
  114. mysql> SHOW STATUS LIKE 'Qcache_hits';   
  115. +---------------+-------+  
  116. | Variable_name | Value |  
  117. +---------------+-------+  
  118. | Qcache_hits   | 4     |   
  119. +---------------+-------+  
  120. 1 row in set (0.00 sec)  

 

 

 

【编辑推荐】

MySQL无重复查询的实现

五种常用的MySQL命令行

修复mysql表的两种方法

php中数组插入mysql表的方法

MySQL条件查询语句的用法

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/230113.html<

(0)
管理的头像管理
上一篇2025-04-19 02:12
下一篇 2025-04-19 02:13

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注