小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MySQL之架構(gòu)簡單分析

 頭號(hào)碼甲 2022-09-15 發(fā)布于北京

 

 

上圖為MySQL的簡易架構(gòu)圖,給您有一個(gè)大概的概念,下面我將為您進(jìn)行進(jìn)一步的分析。

連接器:

當(dāng)連接MySQL數(shù)據(jù)庫時(shí),等待的將是MySQL服務(wù)端的連接器;連接器的職責(zé)是和客戶端建立連接、獲取權(quán)限、維持和管理連接??蛻舳诉B接命令一般是如下所示(建議:不要在命令中顯示添加登入密碼):

mysql -h$ip -p$port -u$user -p$password

查詢緩存:

建立完連接后,就可執(zhí)行select語句。執(zhí)行就會(huì)走向查詢緩存。

MySQL拿到這個(gè)查詢請求后,就會(huì)先到緩存中看看,之前是不是執(zhí)行了該語句。在查詢緩存中數(shù)據(jù)是以key-value形式存在的,key為執(zhí)行的查詢請求,value為查詢結(jié)果。如果執(zhí)行了就直接從緩存中把結(jié)果返回給客戶端,請求結(jié)束。如果語句不在緩存中,就執(zhí)行后續(xù)復(fù)雜操作。

在大多數(shù)情況下不建議使用查詢緩存,為什么呢?因?yàn)椴樵兙彺嫱状笥诶?/span>

查詢緩存的失效非常頻繁,只要對(duì)表進(jìn)行了更新,該表的中查詢緩存全部清除。所以往往很多時(shí)候,緩存還沒使用就被清除了。對(duì)于更新壓力很大的數(shù)據(jù)庫來說,查詢緩存的命中率很低。如果你的業(yè)務(wù)中存在一張靜態(tài)表,很長時(shí)間才會(huì)更新一次。比如,系統(tǒng)配置表,那這張表的查詢才適合查詢緩存。

該功能是自動(dòng)配置的??梢詫?shù) query_cache_type 設(shè)置成 DEMAND ,這樣對(duì)于默認(rèn)的SQL語句就不會(huì)使用查詢緩存。而對(duì)于確定的查詢語句,可以使用 SQL_CACHE 顯示指定,比如如下語句:

select SQL_CACHE * from t where id = 1;

注意:在MySQL8.0之后的版本,把查詢緩存模塊移除了。

分析器

 在沒有命中查詢緩存后,MySQL開始真正執(zhí)行語句了。這時(shí)MySQL對(duì)該語句進(jìn)行解析。

分析器首先進(jìn)行詞法分析,一條sql由多個(gè)字符串和空格組成,MySQL需要分析出這些字符串是什么,代表什么。

做完識(shí)別之后,進(jìn)行語法分析。根據(jù)詞法分析的結(jié)果,語法分析器會(huì)根據(jù)語法規(guī)則對(duì)sql語句進(jìn)行分析,是否符合MySQL的語法規(guī)則。

優(yōu)化器

執(zhí)行完分析器后,MySQL就知道該sql語句要干什么了。在開始執(zhí)行之前,要經(jīng)過優(yōu)化器的處理。 

優(yōu)化器在表里存在多個(gè)索引時(shí),選擇執(zhí)行哪個(gè)索引;或者一個(gè)語句有多表關(guān)聯(lián)時(shí)(join),選擇各表的連接順序。

執(zhí)行器

MySQL通過分析器知道了該語句要做什么,通過優(yōu)化器知道該怎么做,于是進(jìn)入到了執(zhí)行器階段,開始執(zhí)行語句。

開始執(zhí)行之前,首先會(huì)判斷用戶是否有對(duì)表的執(zhí)行權(quán)限(如果是在查詢緩存得到結(jié)果,會(huì)在返回結(jié)果之前進(jìn)行權(quán)限校驗(yàn)),如果沒有會(huì)報(bào)錯(cuò).。如果有權(quán)限,就打開表繼續(xù)執(zhí)行語句。打開表的時(shí)候,執(zhí)行器會(huì)根據(jù)表的引擎定義,去使用引擎提供的接口。

存儲(chǔ)引擎

MySQL區(qū)別于其他數(shù)據(jù)的最具有點(diǎn)的是存儲(chǔ)引擎接口模塊,MySQL可進(jìn)行插拔存儲(chǔ)引擎。

MySQL的存儲(chǔ)引擎有很多種,比如:InnoDB、MyISAM、ISAM、Memory等。在MySQL5.6之前,默認(rèn)存儲(chǔ)引擎是MyISAM,而在該版本之后默認(rèn)的是InnoDB。下表是兩者之前的區(qū)別:

  InnoDB

MyISAM

存儲(chǔ)文件

.frm 表定義文件,.ibd 數(shù)據(jù)文件和索引文件

.frm 表定義文件,.myd 數(shù)據(jù)文件, .myi 索引文件
表鎖、行鎖 表鎖
事務(wù) 支持 不支持
CRUD 讀、寫 讀多
count 掃表 專門存儲(chǔ)的地方
索引結(jié)構(gòu) B+樹 B+樹

 

近期在學(xué)習(xí)MySQL數(shù)據(jù)庫, 后續(xù)將會(huì)持續(xù)更新學(xué)習(xí)隨筆。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多