事務管理:事務的狀態相關知識筆記

?

1、事務的幾個概念

中止事務:事務在執行過程中發生故障,不能執行完成的事務。可以進行事務回滾,保持數據庫的一致性。

事務回滾:將中止事務對數據庫的更新操作撤銷稱為事務回滾。

已提交事務:成功執行完成的事務稱為已提交事務。已提交的事務不能進行回滾操作,必須由程序員手工執行一個補償事務才能撤銷提交的事務對數據庫的影響。

2、事務的狀態?

事務執行的情況:事務成功執行,數據庫進入一個新的一致狀態;事務因為故障或其他原因未能夠成功執行,這個時候數據庫處于不一致狀態,需要對未成功執行的事務造成的變更進行回滾操作,即事務回滾。

2.1 事務的五種狀態

  • 活動狀態:事務的初始狀態,事務執行時處于這個狀態。

  • 部分提交狀態:當操作序列的最后一條語句自動執行后,事務處于部分提交狀態。此時事務雖然已經完全執行,但由于實際輸出可能還臨時駐留在內存中,在事務成功完成之前還有可能出現硬件故障,事務仍有可能中止的情況。因此部分提交狀態不表示事務一定成功執行。

  • 失敗狀態:因為硬件或邏輯等錯誤,使得事務不能繼續正常執行,事務就會進入失敗狀態,然后必須執行回滾操作,然后事務就進入中止狀態。

  • 中止狀態:事務回滾并且數據庫恢復到事務開始執行前的狀態。

  • 提交狀態:事務成功完成后,稱事務處于提交狀態。只有事務處于提交狀態后,才表明事務已經提交。

2.2 事務的狀態轉換?

?begin transation:開始執行事務,使得事務處于活動狀態。

  • end transation:表示事務中所有對數據庫的操作都已經完成。

  • commit transation:標志事務已經成功完成。、,事務中對數據庫的操作已經安全存入數據庫,事務進入提交狀態,結束事務的運行。

  • abort transaction:標志事務進入失敗狀態,系統撤銷事務中所有操作對數據庫的影響,結束事務的運行。

2.3 事務進入中止狀態一般會有以下兩種選擇

1、重啟事務:如果事務是因為軟、硬件錯誤引起,不是事務內部邏輯錯誤所產生時,一般會采用重啟事務的方法。重啟事務可以理解為一個新的事務。

2、殺死事務:這種選擇通常是因為事務中內部邏輯造成的錯誤或者輸入的錯誤。

?

IT技術分享社區

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

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

?

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

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

相關文章

centos7 時間設置

安裝完成centos7后,雖然時區選擇的是上海,但是最終的時間還是不對,因為沒有開啟自動同步NTP功能,所以需要自動手動設置。 首先輸入timedatectl命令,查看當前機器的時間: Local time: 四 2016-08-25 18:52:5…

mysql符合安可要求嗎,安可是什么意思?演唱太過精彩,粉絲要求返場(再唱一個)...

解答:安可是指再唱一個的意思,最早是源自英語“Encore”,常被用在演唱會上,當最后一輪表演或演唱結束之后,粉絲就會開始大喊“安可”,就是想要再聽一場,這時歌手也會應粉絲的要求返場。安可是什…

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

1、并發操作的概念介紹并發操作主要是指在多用戶共享的系統當中,可能存在很多用戶同時對同一個數據進行操作。并發操作會造成丟失更新、不可重復讀、讀臟數據。主要原因是事務的并發操作破壞了事務的隔離性。2、事務調度相關知識事務調度主要有串行調度、并發調度、…

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…