国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

事務基礎

2019-11-08 20:58:49
字體:
來源:轉載
供稿:網友

事務簡介

事務就是以可控的方式對數據資源進行訪問的一組操作。事務本身持有4個限定屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這也就是常說的事務的ACID屬性。

1.原子性原子性要求事務所包含的全部操作是一個不可分割的整體,這些操作要么全部提交成功,要么只要其中一個操作失敗,就全部失敗。2.一致性一致性要求事務所包含的操作不能違反數據資源的一致性檢查,數據資源在事務執行之前處于某個數據一致性狀態,那么事務執行之后也依然需要保持數據間的一致性狀態。3.隔離性事務的隔離性主要規定了事務之間相互影響的程度。隔離性概念主要面向對數據資源的并發訪問,并兼顧影響事務的一致性。當兩個事務或者更多事務同時訪問同一個數據資源的時候,不同的隔離級別決定了各個事務對該數據資源訪問的不同行為。 隔離程度從弱到強分別為:

Read Uncommmitted。它是最低的隔離級別,一個事務可以讀取另一個事務沒有提交的更新結果。Read Uncommitted是以較低的隔離度來尋求較高的性能,其本身無法避免以下幾個問題。

臟讀(Dirty Read)。如果一個事務對數據進行了更新,但事務還沒有提交,另一個事務就可以“看到”該事務沒有提交的更新結果。這樣造成的問題就是,如果一個事務回滾,那么第二個事務在此之前“看到”的數據就是一筆臟數據。不可重復讀(Non-Repeatable Read)。是指同一個事務在整個事務過程中對同一筆數據進行讀取,每次讀取結果都不同。如果事務1在事務2的更新操作之前讀取一次數據,在事務2的更新操作之后再讀取同一筆數據一次,兩次結果不同。所以,Read Uncommitted也無法避免不可重復讀取的問題。幻讀(Phantom Read)。是指同樣一個查詢在整個事務過程中多次執行后,查詢所得的結果集是不一樣的。幻讀針對的是多筆記錄。在Read Uncommitted隔離級別下,不管事務2的插入操作是否提交,事務1在插入操作之前和之后執行相同的查詢,取得的結果集是不同的。所以,Read Uncommitted同樣無法避免幻讀的問題。

Read Committed。通常,Read Committed是大部分數據庫采用的默認隔離級別,它比Read Uncommitted隔離級別擁有更高級別的限定。在該隔離級別下,一個事務的更新操作結果只有在該事務提交之后,另一個事務才可能讀取到同一筆數據更新后的結果。

Repeatable Read。可以保證在整個事務過程中,對同一筆數據的讀取結果是相同的。不管其他事務是否同時在對同一筆數據進行更新,也不管其他事務對同一筆數據的更新提交與否。Repeatable Read隔離級別避免了臟讀和不可重復讀問題,但是無法避免幻讀。

Serializable。它是最為嚴格的隔離級別。所有的事務操作都必須依次順序執行,可以避免其他隔離級別遇到的所有問題,是最為安全的隔離級別,但同時也是性能最差的級別。通常情況下,我們會使用其他隔離級別加上相應的并發鎖的機制來控制對數據的訪問,這樣既保證了系統性能不會損失太大,也能夠在一定程度上保證數據的一致性。

隔離級別與系統的并發性成反比,與數據一致性成正比。

4.持久性事務的持久性是指,一旦整個事務操作成功提交,對數據所做的變更將被記載并不可逆轉。

事務的傳播行為

PROPAGATION_REQUIRED。如果當前存在一個事務,則加入當前事務。如果不存在任何事務,則創建一個新的事務。通常作為默認的事務傳播行為。PROPAGATION_SUPPORTS。如果當前存在一個事務,則加入當前事務。如果不存在事務,則直接執行。通常比較適合查詢方法。PROPAGATION_MANDATORY。強制要求當前存在一個事務,如果不存在,則拋出異常。PROPAGATION_REQUIRES_NEW。不管當前是否存在事務,都會創建新的事務。當某個業務對象所做的事情不想影響到外層事務是選擇。PROPAGATION_NOT_SUPPORTED。不支持當前事務,在沒有事務的情況下執行。如果當前存在事務的話,當前事務原則上將被掛起。PROPAGATION_NEVER。永遠不需要當前存在事務,如果存在當前事務,則拋出異常。PROPAGATION_NESETD。如果存在當前事務,則在當前事務的一個嵌套事務中執行。否則與PROPAGATION_REQUIRED行為相似,即創建新的事務。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广饶县| 英超| 靖边县| 湘阴县| 仪陇县| 周至县| 海宁市| 遵化市| 杭锦旗| 新乡县| 克拉玛依市| 桐梓县| 武鸣县| 赣榆县| 江川县| 福海县| 莱芜市| 长岭县| 花莲市| 沅江市| 阳泉市| 祁阳县| 凌云县| 毕节市| 和政县| 赣榆县| 奇台县| 丰台区| 鄯善县| 游戏| 贵南县| 武宣县| 漠河县| 六盘水市| 湖南省| 陆川县| 沈丘县| 桃江县| 瑞金市| 响水县| 中宁县|