MySql基礎架構
阿新 • • 發佈:2020-12-14
文章目錄
一.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表示這個語句掃描的行數,