mysql query cache_MySQL--query-cache
知識準備:
1、mysql 的query-cache是什么?
mysql可以把執行完成的select 語句和這個select 語句對應的結果集緩存起來;下次再用調用相同的select 語句時就直接返回結果,不是又去執行一次select 語句。
由于少了執行的這一步,所以返回結果比較快。mysql為了保證緩存的結果集與再執行一次select 語句時返回的結果集是一致的,所以;mysql會去判斷select語句
用到的表是不有變更,如果有那么緩存的結果集就作廢,為了得到正確的結果mysql只能是把select 語句再執行一次;
2、要注意的地方:
1、query-cache 是在各個session之間共享的。
2、query-cache 設置的過大那么它的維護成本也相應的變大,這個時候它反而會影響性能。
3、為了確認query-cache在當前業務場景下是否有用,最好的辦法是測試;而且隨著時間的推移,之前有用的query-cache不一定一直有用;
4、query-cache只有在select 語句完全相同而且表并沒有變更的情況下才會從query-cache中返回結果集,注意這里的相同指的是字節序列
上的相同;也就是說select 和SELECT 會被當成兩個不同的東西;select 和select 也有可能會被當成兩個不同的東西,因為它們有可以用了
不同的字符集,而這一點我們人眼是看不出來的;
5、如果一個select 查詢是某一查詢的子查詢,那么這個select 的結果也不會被緩存,也就是說query-cache只會緩存最終結果。
6、如果一個select 它是定義在stored function、event、trigger 中的那么它的結果集也不會被緩存。
7、就算是有可用的query-cache 結果集,用戶的權限不對的話也不會有返回。
8、表的變更語句包括:insert ,update,delete,truncate table,alter table,drop table,drop database。
9、如果select 中包涵有不確定函數那么結果集也不會緩存。
配置query-cache:
1、have_query_cache 這個variable 用來檢測query_cache是否開啟,注意如果是二進制包安裝的mysql這個值會永遠是YES;所以這并沒有什么卵用。
2、如果要關閉query_cache那么query_cache_size參數query_cache_type參數都要啟動的時候設置為0。
3、query_cache_limit 控制一個結果集的最大大小是多少。
4、flush query cache 和reset query cache 用于清除query_cache ;它們兩效果是等價的。
5、如果一個查詢走的是query-cache 那么Qcache_hits 這個status 會加1、不然Com_select會加1。
總結
以上是生活随笔為你收集整理的mysql query cache_MySQL--query-cache的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle10g检测未通过,win64
- 下一篇: win7装mysql一直未响应_求助啊