惠州免费网站建设,大亨网站开发,网站首页作用,大学生网页设计作业成品MySQL的query cache大部分情况下其实只是鸡肋而已#xff0c;建议全面禁用。当然了#xff0c;或许在你的场景下还是挺好的#xff0c;还能发挥作用#xff0c;那就继续使用吧#xff0c;把本文当做参考就好。不过#xff0c;可能有的人人为只需要把 query_cache_size 大…MySQL的query cache大部分情况下其实只是鸡肋而已建议全面禁用。当然了或许在你的场景下还是挺好的还能发挥作用那就继续使用吧把本文当做参考就好。不过可能有的人人为只需要把 query_cache_size 大小调整为 0 就可以了可以忽略 query_cache_type 参数的值反正它也是可以在线调整的。事实果真如此吗让我们来实际模拟测试下就知道了。模拟以下几种场景场景1初始化时同时设置 query_cache_size 和 query_cache_type 的值为 0场景2初始化时设置 query_cache_size 0但设置 query_cache_type 1场景3初始化时设置 query_cache_size 0query_cache_type 1但是启动后立刻 修改 query_cache_type 0场景4初始化时设置 query_cache_size 0query_cache_type 0但是启动后立刻 修改 query_cache_type 1场景5初始化时设置 query_cache_size xMBquery_cache_type 1但是启动后立刻 修改 query_cache_type 0经过测试得到下面几个重要结论结论1想要彻底关闭query cache务必在一开始就设置 query_cache_type 0即便是启动后将 query_cache_type 从 1 改成 0也不行结论2即便query_cache_size 0但 query_cache_type 非 0 的话在实际环境中可能会频繁发生 Waiting for query cache lock结论3一开始就设置 query_cache_type 0 的话没有办法在运行 过程中再次动态启用反过来则可以。也就是说一开始是启用 query cache 的 在运行过程中将其关闭但事实上仍然会发生 Waiting for query cache lock并没有真正的关闭详细测试过程一、测试方法采用sysbench模拟并发oltp请求sysbench --testtests/db/oltp.lua --oltp_tables_count10 --oltp-table-size100000 --rand-initon --num-threads64 --oltp-read-onlyoff --report-interval10 --rand-typeuniform --max-time1800 --max-requests0 run二、具体几种测试模式1、一直关闭QC(query cache的简写下同)即 query_cache_size 0 query_cache_type 0测试过程中一直都没有和query cache lock相关的状态出现结果tps2295.342、启用QC但QC size 设置为 0即query_cache_size 0query_cache_type 1测试过程中一直有 Waiting for query cache lock 状态出现结果tps2272.523、启用QC但QC size为0但启动时立刻关闭QC即初始化时 query_cache_size 0query_cache_type 1启动后立刻修改 query_cache_type 0测试过程中也一直有 Waiting for query cache lock 状态出现结果tps2311.544、关闭QC但启动后立刻启用QC即初始化时 query_cache_size 0query_cache_type 0启动后立刻修改 query_cache_type 1这时会提示报错信息失败ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type1 to enable it也就是说如果一开始就关闭 QC 的话是没办法在运行过程中动态再启用QC的。5、启用QC并设置QC size为256M即 query_cache_size 256Mquery_cache_type 1这种情况下在测试过程中一直有 Waiting for query cache lock 状态出现并且结果tps也很差只有 1395.39(几个案例中最差的一种)6、启用QC设置QC size为256M但启动后立刻关闭QC即 query_cache_size 256Mquery_cache_type 1启动后立刻修改 query_cache_type 0这种情况下在测试过程中也一直有 Waiting for query cache lock 状态出现结果tps2295.79(在这个模式下如果设置 query_cache_type 2效果也不佳)第三种模式下虽然看起来tps还不错但毕竟上面只是简单模拟测试实际情况下如果有频繁的query cache lock的话tps肯定不会太好看。因此总的来说想要获得较高tps的话最好还是一开始就关闭QC不要心存侥幸或者固守陈规。query cache延伸阅读请见参考推荐