本文主要介绍如何在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.缓存无效:
当表的结构或数据发生变化时,查询缓存中的数据不再有效。例如,插入、更新、删除、截断、更改表、删除表或删除数据库将使缓存的数据无效。因此,查询缓存适用于具有大量相同查询的应用程序,而不适用于具有大量数据更新的应用程序。