碼迷,mamicode.com
首頁 > 數據庫 > 詳細

數據庫進階

時間:2021-07-29 16:18:44      閱讀:0      評論:0      收藏:0      [點我收藏+]

標簽:放棄   導致   tom   服務器   分割   限制   ack   成功   結束   

事務

事務(Transaction)是由一系列對系統中數據進?訪問與更新的操作所組成的?個程序執行邏輯單元。 (1) 事務的 語法 (2) 事務的特性 (3) 事務并發問題 (4) 事務隔離級別 (5) 不同隔離級別的鎖的情況(了解) (6) 隱式提交(了解)
技術圖片

1.1 事務的語法

  1. start transaction; begin;
  2. commit; 使得當前的修改確認
  3. rollback; 使得當前的修改被放棄

1.2 事務的ACID特性

  1. 原?性(Atomicity) 事務的原?性是指事務必須是?個原子的操作序列單元。事務中包含的各項操作在?次執?過程中,只 允許出現兩種狀態之一。 (1)全部執行成功 (2)全部執行失敗 事務開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環節。事務執?過程中出錯, 會回滾到事務開始前的狀態,所有的操作就像沒有發?一樣。也就是說事務是?個不可分割的整體,就 像化學中學過的原子,是物質構成的基本單位。

  2. ?致性(Consistency) 事務的一致性是指事務的執?不能破壞數據庫數據的完整性和一致性,一個事務在執?之前和執行之后,數據庫都必須處以?致性狀態。 比如:如果從A賬戶轉賬到B賬戶,不可能因為A賬戶扣了錢,?B賬戶沒有加錢。

  3. 隔離性(Isolation) 事務的隔離性是指在并發環境中,并發的事務是互相隔離的。也就是說,不同的事務并發操作相同的數 據時,每個事務都有各自完整的數據空間。 ?個事務內部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務是不能互相干擾的。 隔離性分4個級別,下面會介紹。

  4. 持久性(Duration) 事務的持久性是指事務?旦提交后,數據庫中的數據必須被永久的保存下來。即使服務器系統崩潰或服 務器宕機等故障。只要數據庫重新啟動,那么一定能夠將其恢復到事務成功結束后的狀態

1.3 事務的并發問題

臟讀:讀取到了沒有提交的數據, 事務A讀取了事務B更新的數據,然后B回滾操作,那么A讀取到的 數據是臟數據。
技術圖片
不可重復讀:同?條命令返回不同的結果集(更新).事務 A 多次讀取同一數據,事務 B 在事務A 多次讀取的 過程中,對數據做了更新并提交,導致事務A多次讀取同一數據時,結果不一致。
技術圖片
幻讀:重復查詢的過程中,數據 就發?了量的變化(insert, delete)。
技術圖片

1.4 事務隔離級別

技術圖片
4種事務隔離級別從上往下,級別越高,并發性越差,安全性就越來越高。 ?般數據默認級別是 讀以提交或可重復讀

查看當前會話中事務的隔離級別
select @@transaction_isolation; mysql8以后
select @@tx_isolation; mysql8以前

  1. 讀未提交(READ_UNCOMMITTED)
    讀未提交,該隔離級別允許臟讀取,其隔離級別是最低的。換句話說,如果一個事務正在處理理某一數 據,并對其進?了更新,但同時尚未完成事務,因此還沒有提交事務;而以此同時,允許另一個事務也 能夠訪問該數據。 臟讀示例:
    在事務A和事務B同時執行時可能會出現如下場景:
    技術圖片
    余額應該為1500元才對。請看T5時間點,事務A此時查詢的余額為0,這個數據就是臟數據,他是事務B 造成的很明顯是事務沒有進行隔離造成的。

  2. 讀已提交(READ_COMMITTED)
    讀已提交是不同的事務執行的時候只能獲取到已經提交的數據。 這樣就不會出現上面的臟讀的情況了。 但是在同一個事務中執行同一個讀取,結果不一致 不可重復讀示例 可是解決了臟讀問題,但是還是解決不了可重復讀問題。
    技術圖片
    事務A其實除了了查詢兩次以外,其它什什么事情都沒做,結果錢就從1000變成0了了,這就是不不可重復讀的問題。

  3. 可重復讀(REPEATABLE_READ)
    可重復讀就是保證在事務處理理過程中,多次讀取同一個數據時,該數據的值和事務開始時刻是一致的。 因此該事務級別限制了不可重復讀和臟讀,但是有可能出現幻讀的數據。 幻讀幻讀就是指同樣的事務操作,在前后兩個時間段內執行對同一個數據項的讀取,可能出現不一致的結果。 詭異的更新事件
    技術圖片

  4. 順序讀(SERIALIZABLE)
    順序讀是最嚴格的事務隔離級別。它要求所有的事務排隊順序執?行行,即事務只能一個接一個地處理,不 能并發。

數據庫進階

標簽:放棄   導致   tom   服務器   分割   限制   ack   成功   結束   

原文地址:https://www.cnblogs.com/circle-coder/p/15072988.html

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 mamicode.com 版權所有  聯系我們:gaon5@hotmail.com
迷上了代碼!
4399在线看MV_久久99精品久久久久久久久久_成人又黄又爽又刺激视频_能收黄台的app不收费