1.MySQL架構 MySQL擁有分層的架構,上層是伺服器層的服務和查詢執行引擎,下層是存儲引擎,真正負責數據的存儲和提取。 服務層包含了連接和線程處理,以及大多數MySQL的核心服務,如對SQL的解析、分析、優化和緩存等功能,存儲過程、觸發器和視圖都是在這裡實現的。 在MySQL中,實例和資料庫往 ...
1.MySQL架構
MySQL擁有分層的架構,上層是伺服器層的服務和查詢執行引擎,下層是存儲引擎,真正負責數據的存儲和提取。
服務層包含了連接和線程處理,以及大多數MySQL的核心服務,如對SQL的解析、分析、優化和緩存等功能,存儲過程、觸發器和視圖都是在這裡實現的。
在MySQL中,實例和資料庫往往是一一對應的,我們無法直接操作資料庫,而是通過資料庫實例來操作資料庫文件,可以理解為資料庫實例是資料庫為上層提供的一個專用於操作的介面。
2.事務的ACID特性
- 原子性:整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾。
- 回滾通過回滾日誌實現,回滾日誌中記錄了所有操作的逆操作。如果事務T2依賴事務T1,那麼T1必須在T2提交之前完成提交操作。
- 一致性
- 隔離性:一個事務所做的修改在最終提交以前,對其他事務是不可見的。MySQL預設的隔離級別是“可重覆讀”,保證了在同一個事務中多次讀取同樣記錄的結果是一致的。
- 持久性:事務一旦被提交,數據一定會被寫入資料庫並儲存起來。
3.InnoDB存儲引擎
InnoDB是MySQL的預設事務型引擎。
InnoDB表是基於聚簇索引建立的,聚簇索引對主鍵查詢有很高的性能。
4.InnoDB的多版本併發控制MVCC
通過在每行記錄後面保存兩個隱藏的列來實現。
這兩列,一個保存行的創建時間,一個保存行的過期時間(刪除時間)。
存儲的並不是實際的時間值,而是系統版本號。