緩存的有缺點(diǎn) 1、如果命中緩存,直接從緩存中返回,減少分析和執(zhí)行SQL語(yǔ)句的過程,提高查詢效率 2、緩存會(huì)帶來額外的開銷,如果開啟緩存的代價(jià)大于不開啟緩存的代價(jià)則不建議開啟緩存 緩存的開銷 1、讀查詢?cè)陂_始之前會(huì)先檢查查詢緩存 2、若某個(gè)讀查詢可以被緩存且未被緩存,那么當(dāng)完成執(zhí)行后,MySQL會(huì)將其結(jié)果存入查詢緩存 3、對(duì)寫操作也有影響,因?yàn)楫?dāng)寫入數(shù)據(jù)時(shí),MySQL必須將對(duì)應(yīng)表的所有緩存都設(shè)置失效, 這在緩存內(nèi)存較大時(shí)將導(dǎo)致很大的系統(tǒng)消耗,所以緩存內(nèi)存并不是越大越好 mysql查詢緩存 1、用于保存查詢語(yǔ)句返回的結(jié)果,命中時(shí),MySQL會(huì)立即返回結(jié)果,省去解析、優(yōu)化和執(zhí)行等步驟 2、MySQL保存結(jié)果于緩存中,對(duì)select語(yǔ)句做hash計(jì)算,計(jì)算的結(jié)果作為key,查詢結(jié)果作為value 3、mysql查詢緩存對(duì)大小寫敏感,所以使用SQL時(shí)盡量使用同一種風(fēng)格 不會(huì)被緩存的語(yǔ)句 1、不確定的數(shù)據(jù),不會(huì)緩存,如now(),current_time()等 2、若查詢SQL中包含用戶自定義函數(shù),存儲(chǔ)函數(shù),用戶變量,臨時(shí)表,mysql庫(kù)中系統(tǒng)表 3、SQL中包含字段權(quán)限 與緩存相關(guān)的服務(wù)器變量 mysql> SHOW VARIABLES LIKE 'query%'; #查看和查詢緩存相關(guān)的系統(tǒng)變量 query_cache_type: 是否打開緩存 OFF: 關(guān)閉 ON: 打開 DEMAND: 只有明確寫了SQL_CACHE的查詢才會(huì)寫入緩存 query_cache_size: 緩存使用的總內(nèi)存空間大小,單位是字節(jié),這個(gè)值必須是1024的整數(shù)倍 query_cache_min_res_unit: 分配的最小內(nèi)存塊大小,太大可能導(dǎo)致內(nèi)存碎片,太小可能導(dǎo)致頻繁請(qǐng)求內(nèi)存 query_cache_limit: 能夠緩存的最大結(jié)果,如果超出這個(gè)大小則清處已經(jīng)緩存的數(shù)據(jù) query_cache_wlock_invalidate: 如果某個(gè)數(shù)據(jù)表被鎖住,是否仍然從緩存中返回?cái)?shù)據(jù),OFF:表示可以返回 mysql> SHOW STATUS LIKE '%qcache%'; #查看緩存狀態(tài) Qcache_free_blocks #緩存池中空閑塊的個(gè)數(shù) Qcache_free_memory #緩存中空閑內(nèi)存量 Qcache_hits #緩存命中次數(shù) Qcache_inserts #緩存寫入次數(shù) Qcache_lowmen_prunes #因內(nèi)存不足刪除緩存次數(shù) Qcache_not_cached #查詢未被緩存次數(shù) Qcache_queries_in_cache #當(dāng)前緩存中緩存的SQL數(shù)量 Qcache_total_blocks #緩存的總內(nèi)存塊 是否使用緩存 1. 通過緩存命中率判斷, 緩存命中率 = 緩存命中次數(shù) (Qcache_hits) / 查詢次數(shù) (Com_select) 2. 通過緩存寫入率, 寫入率 = 緩存寫入次數(shù) (Qcache_inserts) / 查詢次數(shù) (Com_select) 3. 通過 命中-寫入率 判斷, 比率 = 命中次數(shù) (Qcache_hits) / 寫入次數(shù) (Qcache_inserts) 3:1則算是查詢緩存有效,而最好能夠達(dá)到10:1 mysql> SHOW GLOBAL STATUS LIKE 'com_select'; #查看查詢次數(shù)
目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、廣水網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
分析和配置查詢緩存