MySQL查詢緩存設置提高MySQL查詢性能

首先看看MSYQL邏輯框架:圖片來自高性能mysql
\
如果使用了QueryCache,當查詢接收到一個和之前同樣的查詢,服務器將會從查詢緩存中檢索結果,而不是再次分析和執行相同的查詢。這樣就能大大提高查詢性能。


打開查詢緩存,要通過幾個步驟來設置:
雖然你設置mysql允許查詢緩存,但是如果你設置的查詢緩存大小爲了0,這和沒有允許沒什麼區別。
所以必須是幾個步驟的設置才能真正打開查詢緩存這個功能。
下面演示最常用的設置查詢緩存

一、 query_cache_type 使用查詢緩存的方式

一般,我們會把 query_cache_type 設置爲 ON,默認情況下應該是ON
mysql> select @@query_cache_type;

+--------------------+

| @@query_cache_type |

+--------------------+

| ON |

+--------------------+

這樣 當我們執行 select id,name from tableName; 這樣就會用到查詢緩存。在 query_cache_type 打開的情況下,如果你不想使用緩存,需要指明selectsql_no_cache id,name from tableName;

當然也可以禁用查詢緩存: mysql> set session query_cache_type=off;

當然也可以使用命令打開查詢緩存:mysql> set session query_cache_type=on;

這裏我們不討論這個,我們演示常用的設置。

二、 系統變量 have_query_cache 設置查詢緩存是否可用

mysql> show variables like 'have_query_cache';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| have_query_cache | YES |

+------------------+-------+

上面的顯示,表示設置查詢緩存是可用的。

三、 系統變量 query_cache_size

表示查詢緩存大小,也就是分配內存大小給查詢緩存,如果你分配大小爲0,

那麼 第一步 和 第二步 起不到作用,還是沒有任何效果。

mysql> select @@global.query_cache_size;

+---------------------------+

| @@global.query_cache_size |

+---------------------------+

| 16777216 |

+---------------------------+

上面是 mysql設置默認的,有的版本好像默認是0的,那麼就要自己設置下。

設置 set @@global.query_cache_size=100000; 這裏是設置1M左右。

再次查看下 select @@global.query_cache_size;

顯示我們設置新的大小,表示設置成功。

\

四、 query_cache_limit 控制緩存查詢結果的最大值

例如: 如果查詢結果很大, 也緩存?這個明顯是不可能的。

MySql 可以設置一個最大的緩存值來限制緩存,當你查詢緩存數結果數據超過這個值就不會進行緩存。缺省爲1M,也就是超過了1M查詢結果就不會緩存。

mysql> select @@global.query_cache_limit;

+----------------------------+

| @@global.query_cache_limit |

+----------------------------+

| 1048576 |

+----------------------------+

這個是默認的數值,如果需要修改,就像設置緩存大小一樣設置,使用set重新指定大小。

好了,通過4個步驟就可以 打開查詢緩存了,具體值的大小和查詢的方式 這個按需求來設定!。