簡單來說,事務就是要保證一組資料庫操作,要麼全部完成,要麼全部失敗。
資料庫中的資料是共享資源,因此資料庫系統通常要支援多個使用者的或不同應用程式的訪問,會出現併發訪問資料的現象。
資料庫系統必須對這種併發操作提供一種相應的處理機制來保證,訪問彼此之間不受任何干擾,從而保證資料庫的正確性不受到破壞,這種處理機制稱為「併發控制」。其中事務就是為了保證資料的一致性而產生的一種概念和手段。
為了保證資料庫的正確性與一致性,事務要具有4個特性:
如果不考慮事務的隔離性,會發生以下幾種問題:
髒讀是指在乙個事務處理過程裡讀取了另乙個未提交的事務中的資料。
不可重複讀是指在對於資料庫中的某條資料,乙個事務範圍內多次查詢返回不同的資料值(這裡的不同是指某一條或多條資料的內容前後不一致,但資料條數相同)。
不可重複讀和髒讀的區別是:
幻讀指的是乙個事務在前後兩次查詢同乙個範圍的時候,後一次查詢看到了前一次查詢沒有看到的行。
下面用乙個例子來說明這四種隔離級別:
假設表t只有一條記錄,值是1。我們來看看在不同的隔離級別下,事務a會有哪些不同的返回結果,也就是圖裡面t4、t6、t8的返回值分別是什麼。
初步認識事務 一
工作兩年了,這是第一次在csdn開始寫部落格,記錄一下自己。資料庫事務 transaction 是訪問並可能操作各種資料項的乙個資料庫操作序列,這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。事務由事務開始與事務結束之間執行的全部資料庫操作組成。事務擁有四大特性,分別為原子性 一致性...
MySQL事務(一) 事務簡介
事務是資料庫操作的最小工作單元,是一組不可再分割的操作集合,要麼全部執行,要麼全部失敗。在mysql中,事務是一組具有原子性的sql語句,一組 sql 語句要麼全部執行,要麼全部不執行。事務支援是在引擎層實現的,只有使用了 innodb 資料庫引擎的資料庫或表才支援事務,myisam引擎不支援事務,...
mysql 事務 數量 Mysql 事務
什麼是事務 不可分割的操作,比如乙個事務要修改 a 表和刪除 b 表的資料兩個操作,這兩個操作都成功,這個事務才 commit,不然 rollback 每條 sql 語句都是乙個事務 只對 dml 生效 caid 一致性 consistency 讓資料保持一定程度的合理性,比如使用者加入購物車,購物...