mysql基礎 事務TCL

2021-10-22 11:50:23 字數 2409 閱讀 9691

2、事務的建立

2、事務的隔離級別

事務:乙個或一組sql語句組成乙個執行單元,這個執行單元要麼全部執行,要麼全部不執行。

事務由單獨單元的-個或多個sql語句組成,在這個單元中,每個mysql語句是相互依賴的。而整個單獨單元作為乙個不可分割的整體,如果單元中某條sql語句一且執行失敗或產生錯誤,整個單元將會回滾。所有受到影響的資料將返回到事物開始以前的狀態;如果單元中的所有sql語句均執行成功,則事物被順利執行。

通過show engines;來檢視mysql支援的儲存引擎。

在mysql中用的最多的儲存引擎有: innodb,myisam , memory等。其中innodb支援事務,而myisam、memory等不支 持事務

1.原子性(atomicity)

原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼

都發生,要麼都不發生。

2.一致性(consistency )

事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態

3.隔離性(isolation)

事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個

事務內部的操作及使用的資料對併發的其他事務是隔離的,併發

執行的各個事務之間不能互相干擾。

4.永續性(durability)

永續性是指一乙個事務一旦被提交,它對資料庫中資料的改變就是

永久性的,接下來的其他操作和資料庫故障不應該對其有任何影

隱式事務:事務沒有明顯的開啟和結束的標記

比如insert、update、 delete語句

delete from表 where id =1;

顯式事務:事務具有明顯的開啟和結束的標記

前提:必須設定自動提交功能為禁用

update 表set a.salary=500 where name='a'

update 表set b.salary=1500 where name='b'

演示事務的使用步驟

#開啟事務

set autocommit=0;

start

transaction

;#編寫一組事務的語句

update account set balance =

500where username=

'張無忌'

;update account set balance =

1500

where username=

'趙敏'

;#結束事務

commit:

對於同時執行的多個事務,當這些事務訪問資料庫中相同的資料時,如果沒

有採取必要的隔離機制,就會導致各種併發問題 :

髒讀:對於兩個事務t1, t2,t1讀取了已經被t2更新但還沒有被提交的字段.

之後,若t2回滾,t1讀取的內容就是臨時且無效的.

不可重複讀:對於兩個事務t1,t2, t1讀取了乙個字段,然後t2更新了該字段.

之後,t1再次讀取同乙個字段,值就不同了,

幻讀:對於兩個事務t1,t2,t1從乙個表中讀取了乙個字段,然後t2在該表中插

入了一些新的行.之後,如果t1再次讀取同乙個表,就會多出幾行.

資料庫事務的隔離性:資料庫系統必須具有隔離併發執行各個事務的能力,

使它們不會相互影響,避免各種併發問題。

乙個事務與其他事務隔離的程度稱為隔離級別.資料庫規定了多種事務隔

離級別,不同隔離級別對應不同的干擾程度,隔離級別越高,資料一致性就

越好,但併發性越弱。

資料庫提供四種事務隔離級別

隔離級別

描述read uncommitted (讀未提交資料)

允許事務讀取未被其他事物提交的變更.髒讀,不可重複讀和幻讀的問題都會出現題仍然可能出現

read commited(讀已提交資料)

只允許事務讀取已經被其它事務提交的變更.可以避免髒讀,但不可重複讀和幻讀問

repeatable read(可重複讀)

確保事務可以多次從乙個欄位中讀取相同的值.在這個事務持續期問,禁止其他事物對這個字段進行更新.可以避免髒讀和不可重複讀,但幻讀的問題仍然存在.

serializable(序列化)

確保事務可以從乙個表中讀取相同的行在這個事務持續期問,禁止其他事務對該錶執行插入,更新和刪除操作.所有併發問題都可以避免,但效能十分低下.

mysql支援4種事務隔離級別,mysql預設的事務隔離級別是repeatable read

MySQL 事務控制語句 TCL

乙個或者一組 sql 語句組成乙個執行單元,這個執行單元要麼全部執行,要麼全部都不執行,在這個單元中每個 sql 語句都是相互依賴的。整個單元作為乙個不可分割的整體,如果單元中的某條 sql 語句一旦執行失敗或者產生錯誤,整個單元將會回滾。所有受影響的資料將返回到事務開始前的狀態,如果單元中的所有 ...

事務控制語言 TCL

概念 乙個或一組sql語句組成的執行單元,執行單元所有sql語句要麼全執行,要麼全不執行。栗子 張三給李四轉賬。張三 賬戶1000元。李四 賬戶1000元。update 表 set 張三賬戶 500 where name 張三 資料庫中途異常.update 表 set 李四賬戶 1500 where...

TCL語言筆記 TCL基礎語法

tcl 全稱是 tool command language。它是乙個基於字串的命令語言,基礎結構和語法非常簡單,易於學習和掌握。tcl 語言是乙個解釋性語言,所謂解釋性是指不象其他高階語言需要通過編譯和聯結,它象其他 shell 語言一樣,直接對每條語句順次解釋執行。tcl 資料型別簡單。對 tcl...