事務管理基礎:數據庫的并發控制相關知識筆記

?

1、并發操作的概念介紹

并發操作主要是指在多用戶共享的系統當中,可能存在很多用戶同時對同一個數據進行操作。并發操作會造成丟失更新、不可重復讀、讀臟數據。主要原因是事務的并發操作破壞了事務的隔離性。

2、事務調度相關知識

事務調度主要有串行調度、并發調度、可恢復調度三種。

2.1 串行調度

串行調度是指多個事務依次串行執行,并且只有當一個事務的所有操作都執行完成后才可以執行另一個事務的所有操作。

特點:串行調度和執行順序無關,執行的結果都是穩定和正確的,對于N個事務,最多有N!中正確的串行調度。

2.2 并發調度?

并發調度是指利用分時的方法同時處理多個事務。針對N個事務進行并發調度,所產生的調度方案遠大于N!個,并且并發調度的結果很有可能是錯誤的。只有并發調度的結果和串行調度的結果一致,才說明并發調度的結果是正確的。

2.3 可恢復調度?

如果事務T1提交失敗,則應當撤銷T1的影響以保證其原子性。在允許并發執行的系統中,還必須保證依賴T1的任何事務T2也中止。比如T2要讀寫T1寫的數據,則稱為T2依賴于T1。

可恢復調度應滿足:如果事務T2要讀取事務T1寫的數據時,事務T1必須要先于T2提交事務。這樣T2事務讀取的數據才是真實可靠的數據。

3、并發操作帶來的危害

3.1 丟失修改?

丟失修改主要是指多個事務同時對數據庫更新操作,正常情況下應該都執行情況,但會因為并發操作,造成其中某些事務的更新操作丟失。比如12306售票系統,同時售出了兩張火車票,但數據庫中票數只減少了一張,從而造成了數據的不一致。

丟失修改破壞了事務的隔離性。

3.2 不可重復讀?

比如事務A首先讀取了一條數據,然后執行邏輯的時候,事務B將這條數據改變了,然后事務A再次讀取的時候,發現數據不匹配了,這就是所謂的不可重復讀了。

通俗來說,當前事務先進行了一次數據讀取,然后再次讀取到的數據是別的事務修改成功的數據,導致兩次讀取到的數據不匹配,也就照應了不可重復讀的語義。

不可重復讀干擾了事務的獨立性。

3.3 讀臟數據?

臟讀,其實就是讀到了其他的事務回滾前的臟數據。比如事務B執行過程中修改了數據X,在未提交前,事務A讀取了X,而事務B卻回滾了,這樣事務A就形成了臟讀。

簡單來說,當前事務讀到的數據是別的事務想要修改成為的但是沒有修改成功的數據。

讀臟數據時事務隔離性的破壞而破壞了數據的一致性。

?

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271037.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271037.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271037.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring的AOP理解

Spring的AOP理解: OOP面向對象,允許開發者定義縱向的關系,但并適用于定義橫向的關系,導致了大量代碼的重復,而不利于各個模塊的重用。 AOP,一般稱為面向切面,作為面向對象的一種補充&#xff…

PHP 常用框架

1、ThinkPHP 2、Yii2 3、Laravel 4、CodeIgniter 5、CakePHP轉載于:https://www.cnblogs.com/baiqian/p/5808935.html

wpf 如何設置彈出窗口必須關閉才能打開其他軟件_5招教你如何清除C盤除系統外的所有垃圾!都學會了嗎?...

老毛桃winpe 2019-04-24 12:22:54 對于C盤,最讓我們頭疼的問題就是空間不足了!雖然知道C盤會存有很多垃圾,但由于C盤也是系統盤,我們只能可望不可及。那么,有什么辦法清除C盤除系統外的所有垃圾嗎?答案是…

事務管理基礎:排它鎖和共享鎖相關知識筆記

1、排它鎖、共享鎖出現的意義數據庫的并發事務對數據庫進行讀寫,可能會破壞事務的隔離性和數據一致性。為了保持事務的隔離性,系統必須對事務之間的相互作用加以控制。最典型的做法就是當一個事務訪問某個數據對象時,其他事務都不能更新該數據…

php對象底層結構,PHP 底層原理之類和對象

對于PHPer來說,OOP是不可或缺的開發思維,但是你對php類和對象的底層實現又了解多少呢?本著知其然且知其所以然的思想,讓我們一起來尋找答案~類的底層實現可看作是之前我們講過的變量、函數等的知識集合。所以想要理解更深入的同學…

程序默認在副屏顯示_聊一款性價比極高的電競顯示器

小米在6月17日開啟了小米顯示器27寸165Hz版本的眾籌,這臺顯示器的分辨率為2560x1440,也就是大家熟悉的小金剛,它與大金剛的最大區別也只是省去了G-Sync功能,而其他方面的參數幾乎是一致的。那么我們今天就來聊聊這款真香的顯示器。…

CocoaPods安裝和使用教程

CocoaPods是什么? 當你開發iOS應用時,會經常使用到很多第三方開源類庫,比如JSONKit,AFNetWorking等等。可能某個類庫又用到其他類庫,所以要使用它,必須得另外下載其他類庫,而其他類庫又用到其他…

事務管理基礎:兩段鎖協議、活鎖、死鎖相關知識整理

1、兩段鎖協議(Two-phase Locking Protocol) 兩段鎖協議是指對任何數據進行讀寫之前必須對數據進行加鎖;在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖。兩段鎖協議中兩段的含義:事務分為兩個階段,第…

php 空函數,PHP 中函數 isset(), empty(), is_null() 的區別

PHP 中函數 isset(), empty(), is_null() 的區別,使用 PHP 進行開發的時候,經常會用到 isset(), empty(), is_null() 這幾個函數對數據進行判斷,但是這是哪個函數的具體區別其實沒有很好的掌握。下面我們詳細講解一下:NULL什么是 NULL&#x…

UVa11021

11021 TribblesGRAVITATION, n.“The tendency of all bodies to approach one another with a strengthproportion to the quantity of matter they contain – the quantity ofmatter they contain being ascertained by the strength of their tendencyto approach one anot…

python合法變量類型_Python 變量類型

變量存儲在內存中的值。這就意味著在創建變量時會在內存中開辟一個空間。基于變量的數據類型,解釋器會分配指定內存,并決定什么數據可以被存儲在內存中。因此,變量可以指定不同的數據類型,這些變量可以存儲整數,小數或…

數據庫系統故障相關知識筆記

數據庫系統中可能發生的故障主要包括事務故障、系統故障、介質故障、計算機病毒等。下面給大家簡單整理一下相關的故障知識筆記。1、事務故障事務故障是因為程序執行錯誤而引起的非預期、異常終止的故障。主要有邏輯錯誤、系統錯誤導致事務的執行失敗。邏輯錯誤:比如…

dede php分頁代碼,DEDECMS系統分頁標簽自定義二次開發

以前有給大家寫過一篇自定義dedecms留言板的分頁,下面我再來給大家分享一篇自定義常見的分頁標簽例子,希望文章對大家會有所幫助.自定搜索結果頁面文章分頁,在/plus文件夾中新建一個search.php文件,代碼如下:require_once(dirname(__FILE__)."/../include/common.inc.php&…

windows下gvim中文亂碼解決方案

網羅了一些網上的解決windows下gvim中文亂碼的解決方案,都試了一遍,可惜都不能完全解決我的所有問題,最后我綜合一下網上的兩種方案,得到了最后完全解決我的中文亂碼問題的方案,配置很簡單,就是把下面的配置…

python主從_python—mariadb自動部署主從

import configparserimport osdef config_mariadb_yum():exists os.path.exists(/etc/yum.repos.d/mariadb.repo)if exists:print(mariadb.repo文件已經存在)yum_install_mariadb()else:config configparser.ConfigParser()config.read(/etc/yum.repos.d/mariadb.repo, encod…

數據庫系備份相關知識筆記

1、數據庫備份的知識介紹在互聯網時代,最珍貴的財產不是計算機應用軟件,更不是計算機硬件,而是企業在業務長期發展過程中積累下來的業務數據。建立網絡最根本的用途是更加方便的傳遞、使用數據,人為原因、硬盤損壞、計算機病毒、斷…

python數組合并、輸入三行數據,如何在python中合并兩個或三個3D數組?

Numpy的hstack、vstack或dstack(取決于要連接數組的軸)將連接多維數組。在請注意,對于MODIS氣溶膠數據,使用hstack連接陣列有時會拋出錯誤,因為有時陣列是203 x 135,有時是204 x 135,因此水平維度并不總是匹配的基于您…

操作系統:分享6 個“嚇人”的 Linux 命令

目錄 1、crypt 2、kill 3、shred 5、at midnight 6、daemons 1、crypt 好吧,我們一直都有crypt。顧名思義,crypt不是存放垃圾文件的地宮或墓坑,而是加密文件內容的命令。 如今,“crypt”通常作為一個腳本而實現:通過調…