天天看點

Mysql 查詢緩存

Mysql 查詢緩存

查詢緩存的作用就是當查詢接收到一個和之前同樣的查詢,伺服器将會從查詢緩存種檢索結果,而不是再次分析和執行上次的查詢。這樣就大大提高了性能,節省時間。

1.配置查詢緩存

修改配置檔案,修改[mysqld]下的query_cache_size和query_cache_type(如果沒有則添加)。其中query_cache_size表示緩存的大小,而query_cache_type有3個值,表示緩存那種類 型的select結果集,query_cache_type各個值如下:

0或off關閉緩存

1或on開啟緩存,但是不儲存使用sql_no_cache的select語句,如不緩存select sql_no_cache name from wei where id=2

2或demand開啟有條件緩存,隻緩存帶sql_cache的select語句,緩存select sql_cache name from wei where id=4

例子的配置為下,配置完成重新開機Mysql伺服器即可.

query_cache_size=10M
query_cache_type=1      

可以用如下指令檢視是否開啟,其中have_query_cache為是否開啟,query_cache_limit 指定單個查詢能夠使用的緩沖區大小,預設為1M;query_cache_min_res_unit為系統配置設定的最小緩存塊大小,預設是4KB,設定值大對大資料查詢有好處,但如果你的查詢都是小資料 查詢,就容易造成記憶體碎片和浪費;query_cache_size和query_cache_type就是上面我們的配置;query_cache_wlock_invalidate表示當有其他用戶端正在對MyISAM表進行寫操作時,如果查詢在query cache中,是否傳回cache結果還是等寫操作完成再讀表擷取結果。

mysql> show variables like '%query_cache%';

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

| Variable_name                | Value    |

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

| have_query_cache             | YES      |

| query_cache_limit            | 1048576  |

| query_cache_min_res_unit     | 4096     |

| query_cache_size             | 10485760 |

| query_cache_type             | ON       |

| query_cache_wlock_invalidate | OFF      |

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

6 rows in set (0.00 sec)      

2.測試

我們先執行一次,select count(*) from wei ;然後再執行一次,可以看出第二次用的時間遠遠低于第一次的執行,因為第二次從緩存中讀取了select結果。

mysql> select  count(*) from wei ;

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

| count(*) |

|  4194304 |

1 row in set (3.92 sec)

繼續閱讀