MySQL系統架構及功能概述

1 MySql與傳統數據的區別在於存儲引擎架構。MySql是三層架構,最上層是鏈接層,包括安全認證、受權等功能;中間是服務層,大多數功能在這一層實現,包括存儲過程、觸發器、視圖,這一層包含了其核心服務(查詢解析、優化、緩存、函數);底層是存儲引擎,負責數據的存儲和提取,存儲引擎有通用的API(開始事務、提取記錄),但不會相互通訊,只響應上層請求。這種設計讓數據查詢/系統任務與數據存儲/提取分離,能夠根據實際需求選擇存儲方式。  mysql

2 MySql經過解析樹解析查詢,並優化重寫;優化過程須要存儲引擎返回相關開銷,因此優化結果受存儲引擎影響。SELECT語句會先查詢緩存。sql

3 服務層和存儲引擎層都提供併發控制。行鎖只由存儲引擎提供,支持最大的併發訪問,也由最大的鎖開銷。此外,MySql還提供共享鎖、排他鎖、表鎖。鎖的數據量越小,併發度越高,開銷越大。緩存

4 事務是一組查詢:要麼所有成功,要麼所有失敗。START TRANSACTION;...;COMMIT;,具備原子性(全成功or全回滾)、一致性(COMMIT才產生影響)、隔離性(提交後纔對其餘事務可見)、持久性(提交後永久保存),簡稱ACID。事務帶來更大的開銷。安全

5 隔離級別:READ UNCOMMITTED,事務的修改中間態對其餘事務可見,會產生髒讀(針對某條記錄)。READ COMMITTED,只能讀事務COMMIT之後的記錄,不能避免不可重複讀(在其餘事務提交前讀了一次,提交後讀了一次,結果不一致,單條記錄;UPDATE, DELETE)。REPEATABLE READ(可重複讀),默認,普通索引和無索引狀況下使用間隙鎖,,INNODB用MVCC實現;不能避免幻讀(某個範圍記錄屢次讀取不同,INSERT);SERIALIZEABLE。架構

6 死鎖:檢測依賴、超時機制;能夠對由最少行排他鎖的事務回滾。除了數據衝突,還和存儲引擎相關。併發

7 事務日誌:內存中保留一份日誌,在硬盤上作一個備份;全部行爲先在內存的事務日誌中記錄,COMMIT後再修改相應磁盤數據。函數

8 混合使用存儲引擎,在非事務型的表上的變動沒法回滾。InnoDB使用兩段鎖協議,在加鎖階段能夠隨時鎖定,解鎖階段才能釋放,併發好,但有死鎖風險。優化

9 MVCC,兩個隱藏列,分別保存建立時間和刪除時間。SELECT:查找當前時間大於其建立時間且小於其刪除時間的記錄;UPDATE:插入記錄及記錄建立時間;DELETE:更新刪除時間;UPDATE:插入新記錄,當前時間爲建立時間,講舊記錄的刪除時間更新爲當前時間。設計

10 轉換存儲引擎,a.ALTER TABLE X ENGINE = Y b.mysqldump c.CREATE TABLE X LIKE Y。日誌

相關文章
相關標籤/搜索