一、事務
簡單點說,事務就是一件事情。所有與事務相關的內容都是圍繞這一件事情展開的。
二、事務的特性:acid
a:atomicity(原子性),事務必須是乙個不可分割的整體。
c:consistency(一致性),執行完資料庫操作後,資料不會被破壞。如:從 a 賬戶轉賬到 b,要保證 a 賬戶扣錢後,b 賬戶能增加對應的錢數。
i:isolation(隔離性),多個人對同一條資料同時進行操作時,若不加以控制,會產生非常大的麻煩。而這個控制就是指隔離性。
d:durability(永續性),若執行一條 insert 語句,資料庫必須保證一條資料永久地存放到資料庫中。
事務的 acid 特性,都是為了保證資料的一致性。隔離性是保證事務一致性的手段。
三、事務的隔離級別(transanction isolation level)
上面說過,事務的隔離性。所說的控制,就是指這裡的隔離級別。
(1)read_uncommited:讀未提交
(2)read_commited:讀已提交
(3)repeatable_read:可重複讀
(4)serializable:
從上往下,併發性越來越差,安全性越來越高。
四、事務中存在的問題
(1)髒讀——事務 a 讀取了事務 b 未提交的資料,並在這個基礎上又做了其他操作。
(2)不可重複讀——事務 a 讀取了事務 b 已提交的更改資料。
(3)幻讀——事務 a 讀取事務 b 已提交的新增的資料。
不論是在什麼情況下,髒讀都是不被允許的。
五、事務的隔離級別與事務中存在的問題的對應關係
其實事務的隔離級別的存在本身就是為了解決事務中出現的問題。
mysql 預設的隔離級別為 read_commited。
需要提醒的是,這裡所說的事務隔離級別規範是 jdbc 提出來的。
到資料庫級,隔離級別是通過鎖來控制的,當插入資料時,鎖定表,叫「鎖表」。當更新資料時,鎖定行,叫「鎖行」。
六、總結為一張圖
Redis redis事務基礎
在執行指令的過程中,多條連續執行的指令會被干擾 打斷 插隊。redis事務就是將預定義命令包裝成乙個整體 乙個佇列 在執行時,一次按照新增順序依次執行,中間不會被打斷或者干擾。乙個佇列中,一次性 順序性 排他性的執行一系列命令 對於對個客戶端同時操作同一組資料,並且這一組資料在操作修改後不適於繼續操...
Mysql事務基礎
1.事務 transaction 可以是一句sql語句,也可以是一段sql語句。2.mysql中事務預設自動提交 commit 3.事務回滾 rollback 在該事務沒有提交的情況下,回退到該事務執行之前。如果該事務已經被提交,則無法回滾。4.避免事務自動提交的兩種辦法 把資料庫設定成非自動提交。...
JAVA事務的概念
一 什麼是事務 事務是訪問資料庫的乙個操作序列,資料庫應用系統通過事務集來完成對資料庫的訪問。事務的正確執行使得資料庫從一種狀態轉換成另一種狀態。事務必須服從iso iec所制定的acid原則。acid是原子性 atomicity 一致性 consistency 隔離性 isolation 和永續性...