多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應(yīng)用 > MySQL查詢高速緩沖詳解

MySQL查詢高速緩沖詳解

來源:程序員人生   發(fā)布時(shí)間:2016-06-24 13:29:55 閱讀次數(shù):3445次

查詢高速緩沖概述

查詢緩存存儲(chǔ)SELECT查詢的文本和發(fā)送給客戶真?zhèn)€相應(yīng)結(jié)果。如果隨后收到1個(gè)相同的查詢,服務(wù)器從查詢緩存中重新得到查詢結(jié)果,而不再需要解析和履行查詢。如果你有1個(gè)不常常改變的表并且服務(wù)器收到該表的大量相同查詢,查詢緩存在這樣的利用環(huán)境中10分有用。對許多Web服務(wù)器來講存在這類典型情況,它根據(jù)數(shù)據(jù)庫內(nèi)容生成大量的動(dòng)態(tài)頁面。
備注1.查詢緩存不返回舊的數(shù)據(jù)。當(dāng)表更改后(如INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE操作),查詢緩存值的相干條目被清空。2.如果你有許多mysqld服務(wù)器更新相同的MyISAM表,在這類情況下查詢緩存不起作用。3.查詢緩存不適用于服務(wù)器方編寫的語句。如果正在使用服務(wù)器方編寫的語句,要斟酌到這些語句將不會(huì)利用查詢緩存.

查詢高速緩沖如何工作

當(dāng)MySQL服務(wù)器收到1個(gè)查詢要求的時(shí)候,MySQL服務(wù)器首先檢查用戶對所有相干數(shù)據(jù)庫和表的SELECT權(quán)限,如權(quán)限通過,然后以該SQL文本作為key來從查詢緩存中檢索是不是有相同的key(由于數(shù)據(jù)緩存都是以SQL文本作為key來保存的),如果從查詢緩沖中找到對應(yīng)的key值,就返回1個(gè)對應(yīng)的查詢結(jié)果,服務(wù)器把Qcache_hits狀態(tài)變量的值加1,而不需要解析器對sql語句進(jìn)行解析,如果查找不到對應(yīng)的key值,然后履行sql的解析,然后查詢,可以參考下圖。
這里寫圖片描述
備注:
1.作為key值的sql語句是辨別大小寫的,即SELECT * FROM t1select * from t1對應(yīng)的key值是不1樣的。所以,如果開啟了查詢緩沖,在寫SQL語句的時(shí)候,應(yīng)注意這點(diǎn)。
2.如果1個(gè)表被更改了,那末使用那個(gè)表的所有緩沖查詢將不再有效,并且從緩沖區(qū)中移出,這樣保證了數(shù)據(jù)的1致性(即表中數(shù)據(jù)和緩沖中數(shù)據(jù)1致性)。

查詢高速緩沖配置

1.查看查詢緩沖是不是可以
MySQL中,可以通過have_query_cache服務(wù)器系統(tǒng)變量唆使查詢緩存是不是可用。即便禁用查詢緩存,當(dāng)使用標(biāo)準(zhǔn) MySQL2進(jìn)制時(shí),這個(gè)值總是YES。
這里寫圖片描述
2.其他重要配置參數(shù)
查詢緩存系統(tǒng)變量名以query_cache_ 開頭,以下圖,我們將逐1說明。
這里寫圖片描述

  • having_query_cache
    就不在細(xì)說了,主要是控制查詢緩沖的開啟與否。
  • query_cache_limit
    單個(gè)查詢可以被緩存的具體查詢結(jié)果的最大值。
  • query_cache_min_res_unit
    該參數(shù)是控制存儲(chǔ)查詢緩沖時(shí)候,分配的內(nèi)存塊大小。當(dāng)查詢進(jìn)行的時(shí)候,但如果要保存的結(jié)果比較大,超過query_cache_min_res_unit的值 ,這時(shí)候候mysql將1邊檢索結(jié)果,1邊進(jìn)行保存結(jié)果,所以,有時(shí)候其實(shí)不是把所有結(jié)果全部得到后再進(jìn)行1次性保存,而是每次分配1塊 query_cache_min_res_unit 大小的內(nèi)存空間保存結(jié)果集,使用完后,接著再分配1個(gè)這樣的塊,如果還不不夠,接著再分配1個(gè)塊,依此類推,也就是說,有可能在1次查詢中,mysql要進(jìn)行屢次內(nèi)存分配的操作。query_cache_min_res_unit默許值是4KB。 如果你有大量返回小結(jié)果數(shù)據(jù)的查詢,默許數(shù)據(jù)塊大小可能會(huì)致使內(nèi)存碎片,顯示為大量空閑內(nèi)存塊。由于缺少內(nèi)存,內(nèi)存碎片會(huì)強(qiáng)迫查詢緩存從緩存內(nèi)存中修整(刪除)查詢。這時(shí)候,你應(yīng)當(dāng)減少query_cache_min_res_unit變量的值,空閑塊和由于修整而移出的查詢的數(shù)量通過Qcache_free_blocks和Qcache_lowmem_prunes變量的值給出。固然 如果大量查詢返回大結(jié)果(檢查 Qcache_total_blocks和Qcache_queries_in_cache狀態(tài)變量),你可以通過增加query_cache_min_res_unit變量的值來提高性。
  • query_cache_size
    查詢緩存大小,設(shè)置為0表示禁用查詢緩存。 默許緩存大小設(shè)置為0;也就是禁用查詢緩存。當(dāng)設(shè)置query_cache_size變量為非零值時(shí),應(yīng)記住查詢緩存最少大約需要40KB來分配其數(shù)據(jù)結(jié)構(gòu)。(具體大小取決于系統(tǒng)結(jié)構(gòu))。如果你把該值設(shè)置的太小,將會(huì)得到1個(gè)正告,且會(huì)將query_cache_size值設(shè)置為0。
    這里寫圖片描述

    這里寫圖片描述

  • query_cache_type
    該參數(shù)主要是控制緩存行動(dòng)的。query_cache_type變量的GLOBAL值將決定更改后所有連接客戶真?zhèn)€緩存行動(dòng)。在linux下,可在my.cnf(在win下,可在my.ini)中進(jìn)行配置。具體客戶端可以通過設(shè)置query_cache_type變量的會(huì)話值控制它們本身連接的緩存行動(dòng)。例如,1個(gè)客戶可以禁用自己的查詢緩存。 該參數(shù)有3種值以下
    • 0或OFF
      將禁止緩存或查詢緩存結(jié)果
    • 1或ON
      將允許緩存,以SELECT SQL_NO_CACHE開始的查詢語句除外。
    • 2或DEMAND
      僅對以SELECT SQL_CACHE開始的那些查詢語句啟用緩存

查詢高速緩沖保護(hù)

碎片的清算

在前面,我們可以得知,使用緩存,不可避免內(nèi)存碎片,我們可使用FLUSH QUERY CACHE語句來清算查詢緩存碎片,以提高內(nèi)存使用性能。該語句不從緩存中移出任何查詢。RESET QUERY CACHE語句從查詢緩存中移出所有查詢。FLUSH TABLES語句也履行一樣的工作,區(qū)分optimize table tableName,關(guān)于optimize可以參考(http://blog.csdn.net/hsd2012/article/details/51485250)。

查詢緩存性能監(jiān)控

為了監(jiān)視查詢緩存性能,使用SHOW STATUS查看緩存狀態(tài)變量:
這里寫圖片描述
Qcache_free_blocks:緩存中相鄰內(nèi)存塊的個(gè)數(shù)。數(shù)目大說明可能有碎片。履行FLUSH QUERY CACHE會(huì)對緩存中的碎片進(jìn)行整理,只保存1個(gè)空閑塊。
Qcache_free_memory:緩存中的空閑內(nèi)存。
Qcache_hits:每次查詢在緩存中命中時(shí)就增大
Qcache_inserts:每次插入1個(gè)查詢時(shí)就增大。命中次數(shù)除以插入次數(shù)就是不中比率。
Qcache_lowmem_prunes:緩存出現(xiàn)內(nèi)存不足,并且必須為了緩存新的查詢,而從查詢緩沖區(qū)中移出到自由內(nèi)存中的查詢的數(shù)目。這個(gè)數(shù)字最好長時(shí)間來看;如果這個(gè) 數(shù)字在不斷增長,就表示可能碎片非常嚴(yán)重,或內(nèi)存很少。(上面的 Qcache_free_blocks和Qcache_free_memory可以告知您屬于哪一種情況) 。從查詢緩沖區(qū)移除查詢緩沖,使用最近最少使用(LRU)策略。
Qcache_not_cached:不合適進(jìn)行緩存的查詢的數(shù)量,通常是由于這些查詢不是 SELECT 語句或用了now()之類的函數(shù)。
Qcache_queries_in_cache:當(dāng)前緩存的查詢(和響應(yīng))的數(shù)量。
Qcache_total_blocks:緩存中塊的數(shù)量。
Qcache_total_blocks和Qcache_free_blocks可以顯示查詢緩存內(nèi)存碎片。

備注
以上敘述,主要參考mysql手冊。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产成人一区二区三区视频免费蜜 | 成人无遮挡免费网站视频在线观看 | 亚洲性爰视频 | 久久久久国产精品嫩草影院 | 18在线网站 | 久久久亚洲欧洲国产 | 国产精品视频自拍 | 欧美在线综合 | 欧美性猛交xxxxx按摩国内 | 午夜在线观看免费观看大全 | 黄色免费网站在线看 | 免费黄网站大全 | 亚洲视频影院 | 欧美一区二区三区成人看不卡 | 老司机午夜在线视频免费观 | 中文字幕精品视频 | 午夜精品久久久久久久第一页 | 日本aaaaa级毛片片 | 日韩视频高清免费看 | 免费羞羞网站 | 亚洲国产成人综合 | 在线资源你懂的 | 伊人99在线观看 | 成人欧美精品一区二区不卡 | 在线看国产视频 | 国产好大好爽久久久久久久 | 亚洲在线观看免费 | 久爱免费精品视频在线播放 | 国产一级精品高清一级毛片 | 日韩亚洲欧洲在线com91tv | 国产精品亚洲片在线不卡 | 色图一区 | 欧美xxxx性猛交bbbb | 手机在线精品视频每日更新 | 综合网站 | 精品国产人成在线 | 欧美人与牲禽ⅹxxx伦交 | 欧美极度另类精品 | 国产精品久久久久久影视 | 国产精品久久久久影院色老大 | 中文字幕第十页 |