自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫查詢步驟和緩存原理

數(shù)據(jù)庫 MySQL
本文我們簡單介紹了MySQL數(shù)據(jù)庫的查詢步驟以及緩存原理,通過它讓我們來了解MySQL執(zhí)行查詢語句的過程,從而為以后我們對數(shù)據(jù)庫的優(yōu)化奠定基礎(chǔ),希望能夠?qū)δ兴鶐椭?/div>

我們知道,數(shù)據(jù)庫的查詢功能是我們經(jīng)常用到的,那么MySQL數(shù)據(jù)庫是怎樣進(jìn)行查詢的呢?本文我們就來介紹一下MySQL數(shù)據(jù)庫的查詢步驟以及緩存原理,接下來就讓我們來一起了解一下這一部分內(nèi)容。

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

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

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

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

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

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

任何不是從緩存塊中取得數(shù)據(jù)的查詢語句都稱為:緩存錯失(cache miss), 造成緩存錯失有以下幾種原因:

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

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等等

關(guān)于MySQL數(shù)據(jù)庫的查詢步驟與緩存原理的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

原文出處:http://52226777.blog.163.com/ 。

【編輯推薦】

  1. MySQL數(shù)據(jù)庫如何恰到好處地使用索引?
  2. PHP的MySQL庫之Pdo-Mysql與Mysqli性能對比
  3. 一個mysql數(shù)據(jù)庫配置問題導(dǎo)致登錄失敗的解決方案
  4. MySQL數(shù)據(jù)庫打開文件太多導(dǎo)致mysqldump出錯的解決
  5. MySQL數(shù)據(jù)庫.frm文件、.MYD文件和.MYI文件的修復(fù)方法
責(zé)任編輯:趙鵬 來源: 博客轉(zhuǎn)載
相關(guān)推薦

2019-07-11 08:45:00

MySQL數(shù)據(jù)庫緩存

2022-03-31 08:21:14

數(shù)據(jù)庫緩存雙寫數(shù)據(jù)一致性

2022-04-01 16:55:22

數(shù)據(jù)庫緩存日志

2013-01-04 10:00:12

MySQL數(shù)據(jù)庫數(shù)據(jù)庫查詢優(yōu)化

2012-12-17 14:54:55

算法緩存Java

2024-02-20 08:35:08

數(shù)據(jù)庫緩存代碼

2010-05-13 13:49:09

MySQL數(shù)據(jù)庫

2010-06-04 10:05:55

MySQL數(shù)據(jù)庫還原

2015-04-22 14:41:04

云遷移Redis緩存數(shù)據(jù)模型調(diào)整

2019-11-05 14:24:31

緩存雪崩框架

2021-08-05 16:10:03

進(jìn)程緩存緩存服務(wù)Java

2010-06-09 10:47:36

MySQL數(shù)據(jù)庫集群

2010-05-26 15:43:37

連接MySQL數(shù)據(jù)庫

2010-05-14 14:38:03

安裝MySQL

2010-06-07 15:24:34

Java連接MYSQL

2017-07-13 16:40:16

偽共享緩存行存儲

2021-11-30 10:58:52

算法緩存技術(shù)

2022-06-20 05:40:25

數(shù)據(jù)庫MySQL查詢

2011-08-10 11:07:34

MySQL查詢緩沖

2018-05-16 16:10:28

數(shù)據(jù)庫緩存MySQL
點贊
收藏

51CTO技術(shù)棧公眾號