1 Mysql架構分析

2021-10-22 11:25:57 字數 2878 閱讀 6482

聯結器,例如jdbc。

2. manageement services & utilities

系統管理和控制工具。

3. connection pool

mysql連線池,接收請求,建立連線。

4. sql inte***ce

sql介面 接受使用者命令,執行後續操作,並且返回sql的操作結果。

5. parse

解析器,解析驗證sql,若是錯誤sql將在次層直接返回,並sql語句解析為語法樹。

6. optimizer

sql查詢優化器,explain就是此層處理的結果。

7. cache buffer

查詢快取,快取使用者查詢結果集,與sql的hash值組成key,value形式儲存在快取中。

8. pluggable storage engines

​ 儲存引擎,負責資料的處理。

1. mysql server層

​ 一條select語句執行流程整理。

1)聯結器

​ 管理連線,許可權驗證等操作。

2)查詢快取–or—分析器

​ 若是存在快取直接使用快取中的結果返回資料。

​ 不存在快取則需要分析器執行 詞法分析、語法分析,形成語法樹進行後續流程。

注:查詢快取在8.0版本已經移除,因為它失效頻繁,利大於弊。

3)優化器

​ 優化查詢sql,生成執行計畫,選擇索引。

1. 索引選擇。

2. join時各個表的連線順序。

4)執行器
1. 判斷是否具有查詢許可權。

2. 有許可權就呼叫儲存引擎介面。

2. mysql 儲存引擎層

1)myisam

​ 查詢,插入速度高,不支援事務。

2)innodb

​ 支援事務,行級鎖,稍慢於 myisam 。

3)memory

​ 記憶體儲存引擎,擁有極高的插入,更新和查詢效率,重啟丟失。

1. 磁碟檔案

1)重做日誌檔案 redo log

當innodb的資料儲存檔案發生錯誤時,重做日誌檔案就能派上用場。保證資料庫資料的完整性。

使用者可以使用innodb_log_file_size來設定重做日誌檔案的大小,這對innodb儲存引擎的效能有著非常

大的影響。

如果重做日誌檔案設定的太大,資料丟失時,恢復時可能需要很長的時間;

另一方面,如果設定的太小,重做日誌檔案太小會導致依據checkpoint的檢查需要頻繁重新整理髒頁

到磁碟中,導致效能的抖動。

2)系統表空間,使用者表空間

使用者表空間

使用者表空間只儲存該錶的資料、索引資訊,其餘資訊還是存放在預設的系統表空間中

3) innodb邏輯儲存解構 段

區 64個連續的頁組成 1m

頁 一頁16k,innodb io的最小單位行

2. innodb記憶體結構

緩衝池的大小直接影響著資料庫的整體效能,可以通過配置引數 innodb_buffer_pool_size 來設定

2)addtional memory pool
額外記憶體池是innodb儲存引擎用來存放資料字典資訊以及一些內部資料結構的記憶體空間

3)redo log buffer

​ innodb_flush_log_at_trx_commit 三種落盤模式

事務提交時,不會對重做日誌進行寫入操作,而是等待主線程按時寫入每秒寫入一次;

事務提交時,會將重做日誌寫入作業系統快取,並且呼叫作業系統的fsync,將作業系統緩衝中的資料真正寫入磁碟儲存,確保不會出現資料丟失

事務提交時,也會將日誌檔案寫入作業系統快取,但是不會呼叫fsync,而是讓作業系統自己去判斷何時將快取寫入磁碟。

4)checkpoint檢查點機制

① 作用

② 分類

5) double write

double write由兩部分組成,一部分是記憶體中的double write buffer,大小為2mb,另一部分是物理磁碟上共享表空間連續的128個頁,大小也為2mb。

在對緩衝池的髒頁進行重新整理時,並不直接寫磁碟,而是通過memcpy函式將髒頁先複製到記憶體中的double write buffer區域,之後通過double write buffer再分兩次,每次1mb順序地寫入共享表空間的物理磁碟上,然後馬上呼叫fsync函式,同步磁碟,避免作業系統緩衝寫帶來的問題。在完成doublewrite頁的寫入後,再講double wirite buffer中的頁寫入各個表空間檔案中。如果作業系統在將頁寫入磁碟的過程中發生了崩潰,在恢復過程中,innodb儲存引擎可以從共享表空間中的double write中找到該頁的乙個副本,將其複製到表空間檔案中,再應用重做日誌。

6) 記憶體資料落盤

MySQL高階1 Mysql架構

安裝目錄 var lib mysql mysql資料庫檔案的存放路徑 usr share mysql 配置檔案目錄 usr bin 相關命令目錄 用於主從複製 預設是關閉的,記錄嚴重的錯誤資訊,每次啟動和關閉等詳細資訊 預設關閉,記錄查詢的sql語句,如果開啟會減低mysql的整體效能,因為記錄日誌...

mysql學習與提高1 mysql架構總覽

我們先下圖看看mysql整體邏輯架構 mysql s logical architecture 圖1第二層值得關注。這是mysql的核心部分。通常叫做 sql layer。在 mysql據庫系統處理底層資料之前的所有工作都是在這一層完成的,包括許可權判斷,sql解析,行計畫優化,query cach...

mysql優化(1) mysql事務

事務是mysql等關係型資料庫區別於nosql的重要方面 隨著發展nosql資料庫也開始有了事物的概念 是保證資料一致性的重要手段。本文將首先介紹mysql事務相關的基礎概念,然後介紹事務的acid特性,並分析其實現原理。事務由乙個或多個sql語句組成乙個整體,如果所有的語句執行成功那麼修改將會全部...