适度使用Query Cache

阅读更多

适度使用Query Cache

首先,我们需要根据Query Cache 失效机制来判断哪些表适合使用Query 哪些表不适合。由于QueryCache 的失效主要是因为Query 所依赖的Table 的数据发生了变化,造成Query Result Set 可能已经有所改变而造成相关的Query Cache 全部失效,那么我们就应该避免在查询变化频繁的Table Query 上使用,而应该在那些查询变化频率较小的Table Query 上面使用。MySQL 中针对Query Cache 有两个专用的SQL Hint(提示):SQL_NO_CACHE SQL_CACHE,分别代表强制不使用Query Cache 和强制使用Query Cache。我们完全可以利用这两个SQL Hint,让MySQL 知道我们希望哪些SQL 使用Query Cache 而哪些SQL 就不要使用了。这样不仅可以让变化频繁Table Query 浪费Query Cache 的内存,同时还可以减少Query Cache 的检测量。

 

其次对于那些变化非常小,大部分时候都是静态的数据,我们可以添加SQL_CACHE SQL Hint,强制MySQL 使用Query Cache,从而提高该表的查询性能。

 

最后,有些SQL Result Set 很大,如果使用Query Cache 很容易造成Cache 内存的不足,或者将之前一些老的Cache 冲刷出去。对于这一类Query 我们有两种方法可以解决,一是使用SQL_NO_CACHE 参数来强制他不使用Query Cache 而每次都直接从实际数据中去查找, 另一种方法是通过设定“query_cache_limit”参数值来控制Query Cache 中所Cache 的最大Result Set ,系统默认为1M1048576)。当某个Query Result Set 大于“query_cache_limit”所设定的值的时候,QueryCache 是不会Cache 这个Query

你可能感兴趣的:(适度使用Query Cache)