緩存的有缺點(diǎn)
1、如果命中緩存,直接從緩存中返回,減少分析和執(zhí)行SQL語句的過程,提高查詢效率
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、用于保存查詢語句返回的結(jié)果,命中時(shí),MySQL會(huì)立即返回結(jié)果,省去解析、優(yōu)化和執(zhí)行等步驟
2、MySQL保存結(jié)果于緩存中,對(duì)select語句做hash計(jì)算,計(jì)算的結(jié)果作為key,查詢結(jié)果作為value
3、mysql查詢緩存對(duì)大小寫敏感,所以使用SQL時(shí)盡量使用同一種風(fēng)格
不會(huì)被緩存的語句
1、不確定的數(shù)據(jù),不會(huì)緩存,如now(),current_time()等
2、若查詢SQL中包含用戶自定義函數(shù),存儲(chǔ)函數(shù),用戶變量,臨時(shí)表,mysql庫中系統(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)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:
網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的
吳興網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:mysql基礎(chǔ)(五)查詢緩存-創(chuàng)新互聯(lián)
本文地址:
http://weahome.cn/article/ddpshc.html