MySQL事務和隔離級別

MySQL事務和隔離級別


連接管理器:

接受請求

創建線程

認證用戶

建立安全連接

併發控制:

最簡單機制是使用鎖

多版本併發控制: MVCC(使用其他機制)



鎖:

讀鎖:共享鎖

寫鎖:獨佔鎖

加鎖: LOCK TABLES tb_name {READ|WRITE};

解鎖: UNLOCK TABLES

鎖粒度:從大到小,MySQL服務器僅支持表級鎖,行鎖需要由存儲引擎完成;

表鎖:

頁鎖:

行鎖:


事務:

RDBMS: ACID (原子性,一致性,隔離性,持久性)

MyISAM:不支持事務

InnoDB:支持事務


事務日誌:爲事務提供ACID兼容性(日誌中只是記錄操作過程)

重做日誌

redo log

撤銷日誌

undo log

隔離性:

隔離級別:

READ UNCOMMITTED:讀未提交

READ COMMITTED:讀提交

REPATABLE READ:可重讀

SERIABLIZABLE:可串行

查詢默認隔離級別:

show global variables like '%iso%';


多事務同時執行:彼此之間互不影響的方式進行並行;

事務之間交互:

通過數據集


事務:CPU, I/O

RDBMS, 

ACID:

Automicity:原子性,事務所引起的數據庫操作,要麼都完成,要麼都不執行;

Consistency:一致性,A(3000)-->B(2000)

1:A:3000-->2500, 

2: A+B: 4500, 

Isolation: 隔離性

事務調度:事務之間影響最小

MVCC:多版本併發控制

Durability:一旦事務成功完成,系統必須保證任何故障都不會引起事務表示出不一致性;

1、事務提交之前就已經寫出數據至持久性存儲;

2、結合事務日誌完成;

事務日誌:順序IO

數據文件:隨機IO


事務的狀態:

活動的:active

部分提交的:最後一條語句執行後

失敗的:

中止的:

提交的:

事務一旦提交就不能撤銷


事務:併發執行

1、提高吞吐量和資源利用率

2、減少等待時間


事務調度:

可恢復調度;

無級聯高度:

併發控制依賴的技術手段:

時間戳

多版本和快照隔離

START TRANSACTION | BEGIN:啓動事務

SQL

SQL

COMMIT: 提交

ROLLBACK: 回滾



如果沒有明確啓動事務:

autocommit:能實現自動提交,每一個操作都直接提交;


建議:明確使用事務,並且關閉自動提交;

保存點:SAVEPOINT sid

回滾至保存點:ROLLBACK TO sid


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章