【一文看懂SQL系列】TCL: 事務控制語言

TCL: 事務控制語言

事務:一個或一組sql語句組成一個執行單元,這個執行單元要麼全部執行,要麼全部不執行;如果單元中某個sql語句執行失敗或產生錯誤,整個單元將會回滾(回到事務開始以前的狀態)
案例:轉賬

在mysql中的數據用各種不同的技術存儲在文件(或內存)中
在mysql中用的最多的存儲引擎有:innodb, myisam,memory等。期中innodb支持事務,而myisam,memory不支持事務

事務的ACID屬性
1.原子性:事務是一個不可分割的工作單位
2.一致性:事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態
3.隔離性:一個事務的執行不能被其他事務干擾
4.持久性:事務一旦提交,數據就被永久改變

事務的創建

  1. 隱式事務:事務沒有明顯的開啓和結束的標記 比如insert,update,delete語句
  2. 顯式事務:事務具有明顯的開啓和結束標記
    前提:必須先設置自動提交功能爲禁用
SET AUTOCOMMIT=0;

開啓事務語句
結束事務語句

COMMIT; 提交
ROLLBACK; 回滾

數據庫併發中出現的問題
髒讀(沒有提交的字段),不可重複讀(更新了字段),幻讀(插入)

mysql支持4中事務隔離級別
read uncommited(髒讀,不可重複讀), read commited(解決了髒讀), repeatable read(解決了髒讀和不可重複讀,默認), serialization(都解決了)

查看隔離級別

SELECT @@tx_isolation;

設置隔離級別

SET GLOBAL TRANSACTION ISOLATION LEVEL 隔離級別;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章