1.1 Mysql的邏輯架構
第一層主要是授權認證,連接處理等,每個客戶端連接都會擁有一個線程,5.5以後有線程池插件。
第二層是核心服務層,所有的查詢、優化、緩存內部函數都在這一層實現,所有跨存儲引擎的實現也都在一層實現:存儲過程、觸發器、視圖。
第三層存儲引擎負責數據的存儲和提取,服務器通過API和存儲引擎通信,API包含幾十個函數,用戶執行比如“開始一個事物,或者根據主鍵查詢一條記錄等”,但是存儲引擎不會分解sql(InnoDB會解析外鍵),不同存儲引擎不會相同通信,只是簡單相應上層的需求。
1.2.讀寫鎖
處理併發時有兩種鎖即共享鎖和排他鎖或者叫讀鎖、寫鎖,寫鎖是排他的在寫的時候會阻塞其他的讀鎖和寫鎖。
一般有兩種鎖 表鎖和行級鎖(InnoDB和XtraDb在存儲引擎實現了行級鎖)
1.3多版本的併發控制
InnoDB實現併發控制是通過兩個隱藏的列,一個是創建時間,一個是過期時間,存儲的不是實際的時間值而是版本號。每開始一個新的事物版本號會遞增,