《Mysql入門(mén)解析mysql 緩存如何使用內(nèi)存》要點(diǎn):
本文介紹了Mysql入門(mén)解析mysql 緩存如何使用內(nèi)存,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MYSQL實(shí)例先說(shuō)明2點(diǎn)
開(kāi)啟緩存也會(huì)帶來(lái)開(kāi)銷(xiāo),主要表現(xiàn)在一下方面
讀取在查詢開(kāi)始之前必須要檢查緩存
如果查詢是緩存的,但是不在結(jié)果集中,那么產(chǎn)生結(jié)果后保存數(shù)據(jù)會(huì)帶來(lái)一定的開(kāi)銷(xiāo)
向緩存寫(xiě)如數(shù)據(jù)也會(huì)帶來(lái)開(kāi)銷(xiāo)
MYSQL實(shí)例有的情況查詢緩存不會(huì)被緩存,即使你使用 SQL_CACHE也不能緩存
主要一下幾個(gè)
引用了用戶自定義函數(shù)
引用了用戶自定義變量
以用了存續(xù)過(guò)程
查詢中包含一些實(shí)時(shí)的系統(tǒng)函數(shù),比如now
引用了臨時(shí)表
MYSQL實(shí)例雖然上面說(shuō)到緩存會(huì)帶來(lái)一些開(kāi)銷(xiāo)
但是緩存對(duì)mysql? 還是很重要
帶來(lái)的好處比壞處多
MYSQL實(shí)例下面講一下mysql緩存如何使用內(nèi)存
查詢緩存的內(nèi)存池被分為大小可變的塊,每一個(gè)快都知道自己的大小,指向前一個(gè)和后一個(gè)邏輯塊和物理塊 的指針,服務(wù)器啟動(dòng)時(shí)初始化查詢緩存使用的物理內(nèi)存,內(nèi)存池開(kāi)始咋hi要一個(gè)快,她的大小為被配置為緩存的大小減去自身需要的40KB大小.在每次緩存查詢結(jié)果時(shí),會(huì)為查詢結(jié)果分配一個(gè)緩存塊,但是服務(wù)器無(wú)法估計(jì)需要緩存的結(jié)果的大小,至少會(huì)大于等于query_cache_min_res_unit,,服務(wù)器在分配時(shí),不會(huì)再緩存中一次生成最終結(jié)果然后緩存發(fā)送到客戶端,而是產(chǎn)生一條緩存一條,這樣緩存就能保證空間不會(huì)在分配時(shí)浪費(fèi)或者不足.分配內(nèi)存塊的速度較慢,因?yàn)榉?wù)器需要檢查可用內(nèi)存列表并且找打大小合適的快,因此服務(wù)器會(huì)盡量減少分配次數(shù),當(dāng)需要緩存結(jié)果時(shí),他會(huì)構(gòu)建一個(gè)大小至少為最小值的塊,并且把結(jié)果放在塊中,如果塊已經(jīng)滿了,但是數(shù)據(jù)沒(méi)有完整保存,那么就會(huì)產(chǎn)生一個(gè)新塊并且保存數(shù)據(jù),在數(shù)據(jù)存完后,如果數(shù)據(jù)塊還有空隙,服務(wù)器就會(huì)剪輯數(shù)據(jù)塊,并且把空間并入剩余的空間中,在其中可能產(chǎn)生碎片.通過(guò)緊縮,可以講碎片空間并入有效的數(shù)據(jù)空間中.
對(duì)于事物引擎,比如innodb,事物會(huì)影響緩存,因?yàn)榕K數(shù)據(jù)也會(huì)讓其他引用了這塊數(shù)據(jù)的緩存失效.直到該事物提交或回滾之后,這塊數(shù)據(jù)才會(huì)被緩存.
query_cache_min_res_unit:the minimum size (in bytes) for blocks allocated by the query cache. The default value is 4096 (4KB)
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1100.html