♡ — MySQL 查询缓存

MySQL 查询缓存

  • 执行查询语句的时候,会先查询缓存。MySQL 8.0 版本后移除,因为这个功能不太实用。

  • my.cnf 加入以下配置,重启 MySQL 开启查询缓存:

    query_cache_type=1
    query_cache_size=600000
    
  • MySQL 执行以下命令也可以开启查询缓存:

    set global  query_cache_type=1;
    set global  query_cache_size=600000;
    
  • 如上,开启查询缓存后再同样的查询条件以及数据情况下,会直接在缓存中返回结果。这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息。

查询缓存不命中的情况:

  1️⃣ 任何两个查询在任何字符上的不同
  2️⃣ 查询中包含任何拥护自定义函数、存储函数、用户变量、临时表、MySQL 库中的系统表
  3️⃣ 缓存建立之后,MySQL 的查询缓存系统会跟踪查询中涉及的每张表,如果这些表(数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效。


总结:

  • 缓存虽然能够提升数据库的查询性能,但是缓存同时也带来了额外的开销,每次查询后都要做一次缓存操作,失效后还要销毁。

  • So,开启查询缓存要谨慎,尤其对于写密集的应用来说更是如此。如果开启,要注意合理控制缓存空间大小,一般来说其大小设置为 几十 MB 比较合适。

  • 可以通过 sql_cachesql_no_cache 来控制某个查询语句是否需要缓存:

    SELECT sql_no_cache COUNT(*) FROM usr;
    

猜你喜欢

转载自blog.csdn.net/qq_33833327/article/details/129031523