《Mysql緩存技術》要點:
本文介紹了Mysql緩存技術,希望對您有用。如果有疑問,可以聯系我們。
MysqlL查詢緩存機制是MySQL數據庫中的緊張機制之一
緩存sql文本及查詢結果,如果運行相同的sql,服務器直接從緩存中取到結果,而不必要再去解析和執行sql
Mysql緩存實用于那些不常變化的表
緩存的成果是通過sessions共享的,所以一個client查詢的緩存成果,另一個client也可以使用
緩存不會返回過期的數據
Mysql緩存在分庫分表情況下是不起作用的
執行sql里有觸發器,自定義函數,或一些變化的函數和變亂時,mysql緩存也是不起作用的
如果表變化了,那么這個表的所有mysql緩存就都會失效,變化操作包含更新,插入刪除
mysql緩存同樣也可以在事務里使用
查詢語句是一個外部查詢的子查詢時,Mysql緩存是不起作用的
查看是否緩存射中
??注意:
查詢必需是完全相同的(逐字節相同)才能夠被認為是相同的.
另外,同樣的查詢字符串由于其它原因可能認為是分歧的.
使用不同的數據庫、不同的協議版本或者不同默認字符集的查詢被認為是不同的查詢而且分別進行緩存.
下面sql查詢緩存認為是分歧的
查詢緩存認為是分歧的
Mysql緩存相關參數
query_cache_min_res_unit
當查詢進行的時候,Mysql把查詢結果保留在qurey cache中,但如果要保留的結果比較大,超過query_cache_min_res_unit的值 ,這時候mysql將一邊檢索結果,一邊進行保留結果,所以,有時候并不是把所有結果全部得到后再進行一次性保留,而是每次分配一塊query_cache_min_res_unit大小的內存空間保留結果集,使用完后,接著再分配一個這樣的塊,如果還不不夠,接著再分配一個塊,依此類推,也就是說,有可能在一次查詢中,mysql要進行多次內存分配的操作.
恰當的調節query_cache_min_res_unit可以優化內存
如果你的查詢成果都是一些small result,默認的query_cache_min_res_unit可能會造成大量的內存碎片
如果你的查詢成果都是一些larger resule,你可以適當的把query_cache_min_res_unit調大
query_cache_type
假如query_cache_type的值是0或者OFF,不會讀取緩存
假如query_cache_type的值是1或者ON會讀取緩存除非sql語句中注明“SELECT SQL_NO_CACHE”
假如query_cache_type的值是2或者DEMAND只有在sql語句中注明SELECT SQL_CACHE才會讀取緩存
query_cache_size
官方建議緩存大小控制在幾十兆,不要設置成幾百兆,如果設置的太小也是弗成以的,設置小于40Kb會有警告
開啟緩存的方式
??注意
set global 時必要有SUPER權限
假如在開啟Mysql緩存狀態下想針對某個表不讓它進行緩存查詢,此時可以這樣寫
針對某個表不讓它進行緩存查詢
查詢Mysql緩存狀況
《Mysql緩存技術》是否對您有啟發,歡迎查看更多與《Mysql緩存技術》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7101.html