1. 程式人生 > 資料庫 >MySql基礎架構

MySql基礎架構

文章目錄

一.Mysql的基礎架構

MySql在架構上總體上可以分為兩個部分,分別是server層和資料儲存引擎層。

1.server層結構

Server層包括聯結器,查詢器,分析器,優化器,執行器。所有哦跨儲存引擎的功能都在這一層實現,比如儲存過程,觸發器,檢視等。

2.儲存引擎層結構

儲存引擎層負責資料的儲存和提取。其架構是外掛式。資料庫支援的引擎都在這一層生效。包括InnoDb,MyISAM,Mermory等多個儲存引擎。現在常用的儲存引擎是InnoDB。是Mysql的預設引擎。

二.Server層元件詳解

1.聯結器

作用

負責跟客戶端建立連線,獲取許可權,維持和管理連線。因此如果使用者建立連線之後如果沒有關閉連線,修改了使用者的許可權不會影響線上的使用者。

連線的方式以及各自影響

聯結器的連線有兩種方式,分別是長連線和短連線。因為連線十分消耗時間,所以儘量使用長連線,但是這回導致記憶體佔用太大,被系統強行殺掉,導致MySql異常重啟。
解決方案

1.定期斷開長連線。使用一段時間,或者程式裡面判斷執行過一個佔用記憶體的大查詢後,斷開連線,之後要查詢重新連線。
2.在Mysql5.7之後,每次執行一個比較大的操作後,可以通過執行mysql_reset_connection重新初始化連線資源,過程不需要重新連線

2.查詢器

在Mysql8.0以前,可以通過將query_cache_type設定為DEMAND來完成開啟快取,或者執行

SQL SQL_CACHE * FROM T WHERE ID = ''

顯示設定使用快取,但是在Mysql8.0以後放棄了這個功能。

3.分析器

mysql的分析器分為詞法分析器和語法分析器兩種。語法分析器判斷單詞對應的是表明還是欄位名。語法解析器,根據語法規則,判斷SQL是否複合Mysql的語法。

4.優化器

優化器有兩種情況,1.當使用索引的時候,確定使用哪個索引來進行查詢。2.當有join語句時,判斷先執行哪個表,查詢哪個一個。

5.執行器

執行器,負責執行語句,其中慢查詢日誌中的rows_examined表示這個語句掃描的行數,