91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫事務相關知識點有哪些

發布時間:2022-01-05 14:44:28 來源:億速云 閱讀:192 作者:iii 欄目:大數據

本篇內容介紹了“數據庫事務相關知識點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、事務的介紹

事務是并發控制單位,是用戶定義的一個操作序列,這些操作要么都做,要么都不做,是一個不可分割的工作單位。

事務通常以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結束。

二、事務的特征

  • 原子性:事務是數據庫的邏輯工作單位,事務中的操作要么都做,要么都不做。

  • 一致性:事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。

  • 隔離性:一個事務的執行不能干擾其他的事務。即一個事務內部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務之間不能互相干擾。

  • 持久性:一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

三、并發下的問題

當多個線程都開啟事務操作數據庫中的數據時,數據庫系統要能進行隔離操作,以保證各個線程獲取數據的準確性。在介紹數據庫提供的各種隔離級別之前,我們先看看如果不考慮事務的隔離性,會發生的幾種問題:

臟讀

        臟讀是指在一個事務處理過程里讀取了另一個未提交的事務中的數據。

        例如:某個事務已更新一份數據,另一個事務在此時讀取了同一份數據,由于某些原因,前一個回滾了操作,則后一個事務所讀取的數據就會是不正確的臟數據。

不可重復讀

        不可重復讀是指在對于數據庫中的某個數據,一個事務范圍內多次查詢卻返回了不同的數據值,這是由于在查詢間隔,被另一個事務修改并提交了。

        例如:事務A在讀取某一數據,而事務B立馬修改了這個數據并且提交事務給數據庫,事務A再次讀取該數據就得到了不同的結果,發生了不可重復讀。

幻讀

        在一個事務的兩次查詢中數據筆數不一致,是事務非獨立執行時發生的一種現象。

        例如:有一個事務查詢了幾列數據,而另一個事務卻在此時插入了新的幾列數據。先前的事務在接下來的查詢中,就會發現有幾列數據是它先前所沒有的。

對比理解

  • 不可重復讀和臟讀的區別是:臟讀是某一事務讀取了另一個事務未提交的臟數據,而不可重復讀則是讀取了前一事務提交的數據(讀取前一事務提交的數據一些場景下會出現問題)。

  • 幻讀和不可重復讀都是讀取了另一條已經提交的事務,所不同的是不可重復讀查詢的都是同一個數據項,而幻讀針對的是一批數據整體。

四、事務隔離級別

  • Read uncommit(讀未提交) 

  • Read commit(讀已提交) 

  • Repeatable read(可重復讀) 

  • Serializable(序列化) 

讀未提交

        在該隔離級別,所有事務都可以看到其它事務未提交的內容數據。此隔離級別沒有解決任何并發問題,不常用。

讀已提交

        在該隔離級別,一個事務只能讀取其它事務已經提交的內容數據。此隔離級別解決了臟讀,但沒有解決不可重復讀和幻讀,是ORACLE的默認隔離級別。

可重復讀

        在該隔離級別,能保證一個事務之間的多個實例在并發下能讀取同一數據。此隔離級別解決了臟讀和不可重復讀,是MYSQL的默認級別。

序列化

        這是最高的隔離級別,在此隔離級別,事務事務之間只能順序執行,使之沒有任何沖突。序列化解決了臟讀,不可重復讀和幻讀。

隔離級別越高,越能保證數據的完整性和一致性,但是對并發的效率就越低。因此并不是隔離級別越高越好,應根據具體的業務場景選用合適的事務隔離級別。

“數據庫事務相關知識點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

承德市| 都江堰市| 柳江县| 巴彦县| 连州市| 泰和县| 杭州市| 安达市| 阿坝县| 广丰县| 永济市| 重庆市| 百色市| 漳平市| 盐津县| 乐清市| 镇巴县| 鄂托克旗| 内黄县| 区。| 阜阳市| 钟祥市| 青州市| 武宁县| 呼玛县| 农安县| 深水埗区| 青铜峡市| 台东县| 青川县| 岱山县| 邮箱| 忻城县| 启东市| 龙井市| 康平县| 青浦区| 盐亭县| 平遥县| 象州县| 资中县|