太阳集团tyc5997|官网【中国】有限公司

如何在mysql中缓存查询以及失败的解决方案
  • 作者:admin
  • 发表时间:2021-02-05 07:50
  • 来源:未知

本文主要介绍如何在mysql中查询缓存以及如何解决这个问题。通过示例代码详细介绍,对大家的学习或工作有一定的参考学习价值。需要它的朋友将和边肖一起学习。

大家都知道函数在使用之前需要知道参数的属性,这样才能更好的理解函数的使用。学习了查询缓存后,一些小伙伴直接进行接下来的实际操作。在这里,边肖想提醒大家在开始操作之前设置参数,否则会有问题。先说一下mysql查询缓存的步骤和缓存失效的分析。

1.配置参数

(1) have_query_cache表示是否支持查询缓存,YES表示是

(2) query_cache_type表示缓存类型,OFF表示关闭查询缓存,ON表示打开查询缓存,DEMAND表示自定义查询缓存

(3) query_cache_limit表示单个查询支持的最大sql数据量

(4) query_cache_min_res_unit表示查询缓存的最小单位

(5) query_cache_size表示查询缓存空间的大小

(6) Query _ cache _ wlock _ invalid表示查询缓存是否支持写锁,OFF表示不支持,即读取数据时不考虑写锁,ON表示支持,即读取数据会被写锁阻塞。

MySQL的查询缓存默认是关闭的,需要手动配置查询缓存类型才能打开查询缓存。查询缓存类型此参数有三个可能的值:

1)OFF或0:查询缓存功能关闭;

2)ON或1:查询缓存功能开启,SELECT的结果满足缓存条件就会被缓存;否则,它将不会被缓存,并且指定的SQL_NO_CACHE将被显示并且不会被缓存

3)DEMAND或2:根据需要执行查询缓存功能,显示指定的SQL_CACHE的SELECT语句将被缓存;其他不缓存。

在/usr/my.cnf配置中,添加以下配置:

2.打开mysql的查询缓存

query_cache_type=1

配置完成后,重启服务生效;

然后可以在命令行执行SQL语句进行验证,执行一条耗时的SQL语句,然后再多执行几次,检查下几次的执行时间;获取查询缓存中的缓存命中数,以确定是否要转到查询缓存。

查询缓存使用

(1)只有字符串相等的查询sql使用相同的缓存,即select name from city和SELECT name FROM city不使用相同的缓存。

(2)当query_cache_type为ON时,默认情况下所有查询都使用cache,我们可以使用sql_no_cache显示来指定一个查询不使用cache。

query_cache_type=1

(3)当query_cache_type为DEMAND时,需要使用sql_cache指定一个查询来使用cache。

从城市中选择sql_cache名称;

3.缓存无效:

当表的结构或数据发生变化时,查询缓存中的数据不再有效。例如,插入、更新、删除、截断、更改表、删除表或删除数据库将使缓存的数据无效。因此,查询缓存适用于具有大量相同查询的应用程序,而不适用于具有大量数据更新的应用程序。

Baidu
sogou