溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫緩存原理是什么

發(fā)布時(shí)間:2021-08-13 16:18:12 來源:億速云 閱讀:152 作者:Leah 欄目:數(shù)據(jù)庫

今天就跟大家聊聊有關(guān)MySQL數(shù)據(jù)庫緩存原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

  MySQL數(shù)據(jù)庫查詢步驟有哪些

  當(dāng)MySQL收到客戶端發(fā)送的查詢語句時(shí),首先會檢查緩存塊中是否緩存中此語句的結(jié)果,如果有,則檢查權(quán)限,如果能通過權(quán)限的檢查則直接返回緩存塊中的結(jié)果集,我們稱之為命中緩存,此時(shí)會增加Qcache_hits變量的值。

  如果在緩存中找不到此語句的緩存(此時(shí)會增加Com_select變量的值),則進(jìn)入下一步:

  1、MySQL解析器將查詢語句分解成一個(gè)個(gè)標(biāo)識,并建立一棵“解析樹”,解析器會使用MySQL的語法解析和驗(yàn)證這個(gè)查詢語句的標(biāo)識的有效性及標(biāo)識是否出現(xiàn)在適當(dāng)?shù)奈恢蒙?,它還會檢查字符串中的引號有沒有閉合。

  2、預(yù)處理器會檢查此“解析樹”中的表和列是否存在,列的別名是否混淆,最后就是對權(quán)限的檢查,而這些檢查特性是解析器不具備的,只能通過預(yù)處理器來完成。

  3、如果前面兩步都通過了檢驗(yàn),MySQL的優(yōu)化器則對“解析樹”進(jìn)行優(yōu)化,并根據(jù)所預(yù)測的執(zhí)行成本來生成執(zhí)行成本最低的執(zhí)行計(jì)劃。最后執(zhí)行此計(jì)劃,存儲查詢結(jié)果,返回結(jié)果集給客戶端。

  通過上述兩個(gè)變量值,我們可以通過這個(gè)公式計(jì)算出緩存的命中率:Qcache_hits/(Qcache_hits_Com_select),通過命中率來查看我們是否可以從緩存中獲益。這里有一個(gè)問題就是:命中率的多少才是最好的呢?這個(gè)沒有確定值的,要根據(jù)情況而定,如果命中的是那些要篩選大量數(shù)據(jù)才得到的結(jié)果的查詢語句(比如說:GROUPBY,COUNT等),即使命中率很低,但這也是一個(gè)很好的命中率值。

  MySQL數(shù)據(jù)庫緩存原理有哪些

  1、所發(fā)送的查詢語句是不可緩存的,查詢語句不可緩存的原因有兩種:語句包含了不確定值,如CURRENT_DATE,。所得到的結(jié)果集太大而無法將它保存到緩存中.這兩種原因造成的結(jié)果都會增加Qcache_not_cached變量的值,我們可以查看這個(gè)變量的值來檢查我們查詢語句的緩存情況.

  2、所發(fā)送的查詢語句之前沒有發(fā)送過(第一次發(fā)送),所以也不會有什么緩存存在。

  3、所發(fā)送的查詢語句的結(jié)果集之前是存在于緩存中的,但由于內(nèi)存不足,MySQL不得不將之前的一些緩存清除,以騰出空間來放置其它新的緩存結(jié)果。同樣,數(shù)據(jù)的變更也會引發(fā)緩存的失效。比如(更新,刪除,插入)。如果是數(shù)據(jù)的變量引起緩存的失效的話,我們可以通過查看Com_*變量的值來確認(rèn)有多少查詢語句更改了數(shù)據(jù),這些變量為:Com_update,Com_delete等等。

看完上述內(nèi)容,你們對MySQL數(shù)據(jù)庫緩存原理是什么有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI