資料庫事務4種隔離級別及7種傳播行為(三)
髒讀 不可重複讀 幻讀
一、隔離級別: 事務的隔離級別有4個,由低到高依次為read uncommitted、read committed、repeatable read、serializable,這四個級別可以逐個解決髒讀、不可重複讀、幻讀這幾類問題。
1. isolation_read_uncommitted:這是事務最低的隔離級別,它充許令外乙個事務可以看到這個事務未提交的資料。
這種隔離級別會產生髒讀,不可重複讀和幻像讀。
2. isolation_read_committed:保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事務未提交的資料
3. isolation_repeatable_read:這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。
它除了保證乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的情況產生(不可重複讀)。
4. isolation_serializable:這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。
除了防止髒讀,不可重複讀外,還避免了幻像讀。
二、傳播行為
1、propagation_required:如果當前沒有事務,就建立乙個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。
2、propagation_supports:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。『
3、propagation_mandatory:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就丟擲異常。
4、propagation_requires_new:建立新事務,無論當前存不存在事務,都建立新事務。
5、propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
6、propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。
7、propagation_nested:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。
事務的四大特性 隔離級別 七大傳播特性
事務的四大特性acid 1 原子性 atomicity 事務的最小單位,且不可分割。事務的原子性確保執行要麼全部成功,要麼全部失敗。2 一致性 consistency 使資料庫從乙個一致性狀態到另乙個一致性狀態。3 隔離性 isolation 併發訪問資料庫時,乙個使用者的事務不被其他事務所干擾。4...
資料庫事務ACID和四個隔離級別
在實際的業務場景中,併發讀寫引出了和事務控制的需求。優秀的事務處理能力是關係型資料庫 特別是oracle等商用rdbms 相對於正當風口的nosql資料庫的一大亮點。但這也從另一方面說明了事務控制的複雜性 正因為過於複雜,大部分nosql都沒提供事務支援或只提供部分事務支援。乙個資料庫事務是 乙個被...
資料庫的四個隔離級別
size medium b 髒讀 b 又稱無效資料的讀出,是指在資料庫訪問中,事務t1將某一值修改,然後事務t2讀取該值,此後t1因為某種原因撤銷對該值的修改,這就導致了t2所讀取到的資料是無效的。b 不可重複讀 b 是指在是指在資料庫訪問中,乙個事務範圍內兩個相同的查詢卻返回了不同資料。這是由於查...