日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MySQL之架構簡單分析

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

 

 

上圖為MySQL的簡易架構圖,給您有一個大概的概念,下面我將為您進行進一步的分析。

連接器:

當連接MySQL數據庫時,等待的將是MySQL服務端的連接器;連接器的職責是和客戶端建立連接、獲取權限、維持和管理連接。客戶端連接命令一般是如下所示(建議:不要在命令中顯示添加登入密碼):

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

查詢緩存:

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

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

在大多數情況下不建議使用查詢緩存,為什么呢?因為查詢緩存往往弊大于利。

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

該功能是自動配置的。可以將參數 query_cache_type 設置成 DEMAND ,這樣對于默認的SQL語句就不會使用查詢緩存。而對于確定的查詢語句,可以使用 SQL_CACHE 顯示指定,比如如下語句:

select SQL_CACHE * from t where id = 1;

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

分析器

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

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

做完識別之后,進行語法分析。根據詞法分析的結果,語法分析器會根據語法規(guī)則對sql語句進行分析,是否符合MySQL的語法規(guī)則。

優(yōu)化器

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

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

執(zhí)行器

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

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

存儲引擎

MySQL區(qū)別于其他數據的最具有點的是存儲引擎接口模塊,MySQL可進行插拔存儲引擎。

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

  InnoDB

MyISAM

存儲文件

.frm 表定義文件,.ibd 數據文件和索引文件

.frm 表定義文件,.myd 數據文件, .myi 索引文件
表鎖、行鎖 表鎖
事務 支持 不支持
CRUD 讀、寫 讀多
count 掃表 專門存儲的地方
索引結構 B+樹 B+樹

 

近期在學習MySQL數據庫, 后續(xù)將會持續(xù)更新學習隨筆。

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多