天天看點

MySQL微觀結構

MySQL微觀結構:使用者發起請求到響應的一系列過程

<a href="https://s3.51cto.com/wyfs02/M02/8E/42/wKioL1i6yN2QWdduAALArr839IY802.png" target="_blank"></a>

過程:

1、當使用者發起請求,由連接配接管理器負責接收請求,并由線程管理器為使用者建立一個新的線程,來響應使用者的請求。

2、然後線程管理器将線程的控制權限轉交給使用者子產品,來驗證用的求情是否有相應的通路權限。如果沒有,則請求被終止。如果有權限,那麼連接配接就建立了。

3、連接配接建立之後,使用者發起查詢語句和指令,由指令分發子產品來完成使用者所請求的内容是不是緩存子產品中直接傳回、是否由日志子產品記錄日志。

如果緩存中沒有使用者所查詢的内容,那麼使用者的查詢語句轉交給解析器去解析,生成執行樹。并交由底層的對應子產品來處理。

4、

如果發起的是select語句,則由優化器來生成更優的執行過程。

如果使用者發起的是跟表修改、定義相關的指令(insert、update、delete、create),則由表定義子產品來處理請求。

如果使用者發起的指令是需要維護、修理一張表,比如做碎片整理,則交給表維護子產品來處理。

5、無論使用者執行的是什麼樣的請求,都由狀态報告子產品來記錄。并且最後都會轉交給通路控制子產品來完成權限檢查。如果有權限,則由表管理器來負責後續的處理(如讀取表結構、修改表結構、施加表鎖等),最後要執行操作都要由存儲引擎到對應的表中執行相應的操作。

是以磁盤引擎才是真正的跟磁盤上的資料打交道的接口。

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1903264,如需轉載請自行聯系原作者