如果你的数据库查询开启了Query Cache(通称QC)作用后,数据库查询在实行SELECT句子时,会将其結果放进QC中,时下一回解决一样的SELECT恳求时,数据库查询就是从QC获得結果,而不用去数据库中查寻。

Query Cache

在这一“Cache为王”的时期,人们一直根据不一样的方法去缓存文件人们的結果进而提升没有响应高效率,但1个缓存文件体制是不是合理,实际效果怎样,确是1个必须好好地思索的难题。在MySQL中的Query Cache就是说1个可用偏少状况的缓存文件体制。在图中中,假如缓存文件准确率十分高得话,有测试表明在极端化状况下能够提高工作效率238%。但具体情况怎样?QC有给出标准,假如数据库被变更,那麼和这一数据库有关的所有Cache所有都是失效,并删掉之。这儿“数据库变更”包含: INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等。举例说明,假如数据库posts浏览经常,那么代表它的许多统计数据会被QC缓存文件起來,可是每次posts数据库的升级,不管升级是否危害来到cache的统计数据,都是将所有和posts表有关的cache消除。当你的数据库升级经常得话,那么Query Cache将会变成系统软件的承担。有试验说明,槽糕时,QC会减少系统软件13%的解决工作能力。

当你的运用对数据库查询的升级非常少,那麼QC将会功效明显。较为典型性的如博客系统,通常搏客升级相对性比较慢,数据库相对稳定不会改变,此刻QC的功效会较为显著。

但是,将会有的每个人为只必须把 query_cache_size 尺寸调节为 0 就就行了,能够忽视 query_cache_type 主要参数的值,总之它都是能够免费在线调节的。

详尽检测全过程:

一、测试标准

选用sysbench仿真模拟高并发oltp恳求:

sysbench –test=tests/db/oltp.lua –oltp_tables_count=10 –oltp-table-size=100000 –rand-init=on –num-threads=64 –oltp-read-only=off –report-interval=10 –rand-type=uniform –max-time=1800 –max-requests=0 run

二、实际几类检测方式

1、始终关掉QC,即 query_cache_size = 0, query_cache_type = 0

检测全过程中,始终也没有和query cache lock有关的情况出現,結果tps:2295.34

2、开启QC,但QC size 设定为 0,即:query_cache_size = 0,query_cache_type = 1

检测全过程中,始终有 Waiting for query cache lock 情况出現,結果tps:2272.52

3、开启QC,但QC size为0,但启动马上关掉QC,即复位时 query_cache_size = 0,query_cache_type = 1,起动后马上改动 query_cache_type = 0

检测全过程中,也始终有 Waiting for qc lock 情况出現,結果tps:2311.54

4、关掉QC,但起动后马上开启QC,即复位时 query_cache_size = 0,query_cache_type = 0,起动后马上改动 query_cache_type = 1

这时候,会提醒出错信息内容:

不成功:ERROR 1651 (HY000): QC is disabled; restart the server with query_cache_type=1 to enable it

换句话说,假如刚开始就关掉 QC 得话,是没法在运作全过程中动态性再开启QC的。

5、开启QC,并设定QC size为256M,即 query_cache_size = 256M,query_cache_type = 1

这种情况下,在检测全过程中始终有 Waiting for QC lock 情况出現,而且結果tps也很差,只能 1395.39(好多个实例中最烂的这种)

6、开启QC,设定QC size为256M,但起动后马上关掉QC,即 query_cache_size = 256M,query_cache_type = 1,起动后马上改动 query_cache_type = 0

这种情况下,在检测全过程中也始终有 Waiting for QC lock 情况出現,結果tps:2295.79(在这一方式下,假如设定 query_cache_type = 2,实际效果都不佳)

第三类方式下,尽管看上去tps还非常好,但终究上边仅仅简易仿真模拟检测,具体情况下假如有经常的query cache lock得话,tps毫无疑问不容易太漂亮。

关掉QC

因而,愿意得到较高tps得话,最好是還是刚开始就关掉QC,不必侥幸心理或是坚守陈规。从总体上,QC不提议应用,可有可无作用”夫可有可无,弃之如可是,食之无个人所得”。

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注