并發操作帶來的數據不一致性包括丟失修改、臟讀、不可重復讀等。
1、丟失修改
當兩個或多個事務選擇同一數據,并且基于最初選定的值修改該數據時,會發生丟失修改問題。
2、臟讀
當一個事務正在訪問數據,并且對數據進行了修改,而這種修改還沒有提交到數據庫中,這時,另外一個事務也訪問這個數據,然后使用了這個數據。因為這個數據是還沒有提交的數據,那么另外一個事務讀到的這個數據是臟數據。
3、不可重復讀
一個事務重新讀取前面讀取過的數據,發現該數據已經被另一個已提交的事務修改過。即事務1讀取某一數據后,事務2對其做了修改,當事務1再次讀數據時,得到的與第一次不同的值。在一個事務中前后兩次讀取的結果并不一致,導致了不可重復讀。
并發和并行的區別
并發和并行是既相似又有區別的兩個概念,并行是指兩個或者多個事件在同一時刻發生;而并發是指兩個或多個事件在同一時間間隔內發生。在多道程序環境下,并發性是指在一段時間內宏觀上有多個程序在同時運行,但在單處理機系統中,每一時刻卻僅能有一道程序執行,故微觀上這些程序只能是分時地交替執行。
倘若在計算機系統中有多個處理機,則這些可以并發執行的程序便可被分配到多個處理機上,實現并行執行,即利用每個處理機來處理一個可并發執行的程序,這樣,多個程序便可以同時執行。