mysql可以被分為server層和儲存引擎層兩個部分。
server層包括聯結器、查詢快取、分析器、優化器、執行器等,涵蓋mysql的大多數核心服務功能,以及所有的內建函式(如日期、時間、數學和加密函式等),所有跨儲存引擎的功能都在這一層實現,比如儲存過程、觸發器、檢視等。
儲存引擎層直接處理資料。其架構模式是外掛程式式的,支援innodb、myisam、memory等多個儲存引擎。現在最常用的儲存引擎是innodb,它從mysql 5.5.5版本開始成為了預設儲存引擎。
聯結器負責跟客戶端建立連線、獲取許可權、維持和管理連線。當登入者輸入賬號密碼後,在完成經典的tcp握手後,聯結器就要開始認證身份。
當乙個使用者成功建立連線後,管理員修改使用者許可權,也不會影響到已經成功建立的連線。當下一次再建立連線時,才會使用新的許可權設定。
當連線建立以後,如果沒有操作,那麼連線就處於空閒狀態。當客戶端太久沒有動靜,聯結器就會斷開連線,mysql預設的時間時是8小時。當連線斷開後客戶端需要重新與伺服器建立連線才能傳送請求。
由於建立連線的過程比較複雜,所以盡量使用長連線,避免經常性的建立連線。
mysql拿到乙個查詢請求後,會先到查詢快取看看,之前是不是執行過這條語句。如果命中就直接返回結果。但是不建議使用查詢快取,在mysql 8.0版本直接將查詢快取的整塊功能刪掉了。
分析器的功能就是解析sql語句。分為詞法分析、語法分析、語**析等階段。
詞法分析:mysql識別出乙個sql語句中各個字串分別是什麼,代表什麼。
語法分析:根據詞法分析的結果,語法分析器會根據語法規則,判斷你輸入的這個sql語句是否滿足mysql語法。
分析器幫助mysql理解了使用者想要做什麼,但是乙個sql語句可能非常的複雜、涉及的表很多。mysql需要高效快速地執行使用者地sql語句,就需要優化器幫助引擎選擇最好的執行計畫。比如,如何選取索引;在涉及多表的時候,各表之間的連線順序是什麼樣的。
優化器再確定好執行計畫後,就進入了執行器。執行器的作用就是操作引擎處理資料,然後返回結果。當然在開始執行之前,mysql還會先判斷一下你對錶有沒有執行操作的許可權,有許可權才會開啟表繼續執行。
mysql架構 MySQL的基礎架構
mysql是關聯式資料庫,關聯式資料庫,顧名思義,是建立在關係模型基礎上的資料庫,我們現實世界中的各種實體以及實體之間的各種聯絡一般可用關係模型來表示。經過數十年的發展,關聯式資料庫在理論和工業實踐中都已經發展到很成熟的地步,可以說,目前的絕大部分應用,使用mysql都有成熟的解決方案。資料庫的架構...
MySQL基礎架構
mysql 基本架構示意圖 負責跟客戶端建立連線 獲取許可權 維持和管理連線。平常使用中要盡量使用長連線,但是當全部使用長連線後,mysql占用記憶體會漲的特別快,原因是mysql在執行過程中臨時使用的記憶體是管理在連線 物件裡面的,這些資源會在連線斷開的時候才釋放,大量長連線積累下來會導致記憶體占...
MySQL 基礎架構
mysql 架構分為兩部分,server層與儲存引擎。其中 server 包含 聯結器 查詢快取 分析器 優化器 執行器。儲存引擎架構模式為外掛程式式的,支援 innodb myisam memory 等多個儲存引擎,最常用的是 innodb。建立資料庫連線,驗證使用者名稱密碼是否匹配。讀取使用者許...