1. 程式人生 > >TCL語句(二) -- 事務

TCL語句(二) -- 事務

特點 隔離級別 復讀 repeat 開始 save 哪些 -- llb

一、含義

  事務:一條或多條 sql 語句組成一個執行單位,一組 sql 語句要麽都執行要麽都不執行

二、特點(ACID 屬性)

  A.原子性(Atomicity) 原子性是指事務是一個不可分割的工作單位,事務中的操作要麽 都發生,要麽都不發生。

  C.一致性(Consistency) 事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態 。

  I.隔離性(Isolation) 事務的隔離性是指一個事務的執行不能被其他事務幹擾,即一個 事務內部的操作及使用的數據對並發的其他事務是隔離的,並發 執行的各個事務之間不能互相幹擾。

  D.持久性(Durability) 持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是 永久性的,接下來的其他操作和數據庫故障不應該對其有任何影 響

三、事務的使用步驟★

隱式(自動)事務:沒有明顯的開始和結束,本身就是一條事務可以自動提交,比如 insert、update、delete;

顯式事務:具有明顯的開始和結束

使用顯式事務

① 開啟事務

SET autocommit=0;

START TRANSACTION;

② 編寫一組邏輯 sql 語句

註意:sql 語句支持的是 insert、update、delete

設置回滾點:

SAVEPOINT回滾點名;

③ 結束事務
提交事務:COMMIT;
回滾事務:ROLLBACK;

回滾到指定的地方:ROLLBACK TO 回滾點名;

四、並發事務

1、事務的並發問題是如何發生的?

  多個事務 同時操作 同一個數據可的相同數據

2、並發問題有哪些?

  臟讀:一個事務讀取了其他事務還沒有提交的數據,讀到的是其他事務“更新”的數據

  不可重復讀:一個事務多次讀取,結果不一樣

  幻讀:一個事務讀取了其他事務還沒有提交的數據,只是讀到的是其他事務“插入”的數據

3、如何解決並發問題

  通過設置隔離級別解決並發問題

4、隔離級別

                    臟讀      不可重復讀      幻讀

  read uncommitted:讀未提交      √        √         √ 
  read committed:讀已提交       ×        √         √
  repeatable read:可重復度       ×        ×         √
  serializable:串行化          ×        ×         ×

TCL語句(二) -- 事務