使用MySql查询缓存(query_cache_size)
在MySql中查询缓存的原理:
其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小是用字节大小来计算的,所以缓存多少数据可以根据需求进行调节.如果是第一次查询,则从硬盘找查找并返回结果,如果有记录返回Qcache会记录查找到的结果,当用户发出第二次查询,MySql就会询问Qcache是否已经存在了这个查询。如果存在则从Qcache中返回查询结果,如果不存在则又一次从硬盘中查找结果并把找到的结果放到Qcache当中.
1.使用MySql查询缓存
语法规则: set global query_cache_size = 开辟内存的字节大小
比如我们要把一个Qcache的查询缓存的空间设置为64M,那么我们可以使用以下命令:
set global query_cache_size = 64 * 1024 * 1024
换算原理如下:
64M = ?字节
1kb = 1024 字节
1M = 1024KB = 1024 * 1024字节
64M = 64 * 1024 * 1024
默认的情况下,mysql是没有开启查询缓存的功能
没有开启查询缓存,那么无论你查多少次数据库都是去硬盘当中查找数据,因此速度不会发生很多的时间差,然后现在设置查询缓存Qcache的空间为64M后在来查看结果,详细步骤如下:
第1步:使用命令set global query_cache_size = 64 * 1024 * 1024 设置查询缓存的空间(Qcache的空间)
不出现任何的错误就代表设置成功,就代表当前开启了查询缓存,并且拥有64M的临时内存空间。
第2步:再次测试select * from tbl_no where username=’itheima’查看结果
第1次查询:4.78sec,并且Qcache会记录当前的查询结果
第2,3,4...次查询:0sec,从Qcache中返回结果,发觉速度提升了很多倍
总结:查询缓存是一种非常简单的手段,只需要一个简单命令设置空间的字节大小就能完成这个优化技术,然而查询缓存是需要付出代价的,因为查询缓存会占据内存的空间,因此如果你开启很多的内存空间,而内存空间爆满了,那么计算机的操作系统有可能会缓慢甚至重启,因此查询缓存是在一个公司创立时候大概只有100万条数据左右的时候建议使用,如果你数据已经超过千万级别访问量又特别的大的时候,查询缓存极有可能造成服务器的重启或者内存的崩溃.
注意事项:查询缓存对整个数据库都有效
2.关闭MySql查询缓存
语法规则: set global query_cache_size = 0
关闭后,缓存就会失效,之前的查询结果全部又会到硬盘当中去查找了