mysql 筆記

howtouse發表於2020-11-10

1.mysql邏輯架構圖

mysql 筆記

a.第一層:連線處理,授權認證,安全等
b.第二層:核心服務層(伺服器層)

  • 查詢解析、分析、優化、快取
  • 內建函式(日期、時間、數學和加密函式)
  • 儲存過程、觸發器、試圖

c.第三層:儲存引擎層,負責mysql中資料的儲存和提取

2.在事務中使用混合儲存引擎

a.mysql的伺服器層不管理事務,事務是由下層的儲存引擎實現的
b.在同一個事務中,使用多種儲存引擎是不可靠的
c.回滾時,非事務型的表上無法撤銷,會導致資料庫處於不一致的狀態,事務的最終結果將無法確定。

3.MVCC

a.實現:通過儲存資料在某個時間點的快照實現。
b.不管需要執行多長時間,每個事務看到的資料都是一致的。
c.根據事務開始的時間不同,每個事務對同一張表,同一時刻看到的資料可能是不一樣的。
d.不同儲存引擎的MVCC實現是不同的,有樂觀(optimistic)和悲觀(pessimistic)併發控制。

4.InnoDB的MVCC

a.通過在每行記錄後邊儲存兩個隱藏的列來實現。
b.一個儲存了行的建立時間,一個儲存行的過期時間(或刪除時間)。(儲存的並不是實際的時間值,而是系統版本號)
c.每開始一個新的事務,系統版本號都會自動遞增。
d.MVCC只在REPEATABLE READ(可重複讀)和READ COMMITTED(提交讀)這兩個隔離級別下工作。

5.表的定義

a.在檔案系統中,mysql將每個資料庫儲存為資料目錄下的一個子目錄。
b.建立表時,mysql會在資料庫子目錄下建立一個和表同名的.frm檔案儲存表的定義。
c.表的定義,在mysql的服務層統一處理。
d.innodb會同時建立 .ibd檔案。
e.myisam會將表儲存在兩個檔案中:資料檔案和索引檔案,分別以.MYD和.MYI為副檔名。

6.查詢執行路徑

mysql 筆記
a.客戶端傳送一條查詢給伺服器。
b.伺服器先檢查查詢快取,如果命中了快取,則立刻返回儲存在快取中的結果。否則進入下一階段
c.伺服器端執行SQL解析、預處理,再由優化器生成對應的執行計劃。
d.MYSQL根據優化器生成的執行計劃,呼叫儲存引擎的api來執行查詢。
e.將結果返回給客戶端。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章