SQL Server 中的事务(含义,属性,管理)
含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT、INSERT、UPDATE和DELETE都是隐式事务的一部分。即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行。 事务开始之后,事务所
含义:
事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT、INSERT、UPDATE和DELETE都是隐式事务的一部分。即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行。
事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入、修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引。当取消这些事务操作时,系统自动执行这些操作的反操作,,保证系统的一致性。系统自动生成一个检查点机制,这个检查点周期的检查事务日志。如果在事务日志中事务全部完成,那么检查点事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点提交标识;如果在事务日志中,事务没有完成,那么检查点不会将事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点未提交的标识。事务的恢复及检查点保证了系统的完整和可恢复。
事务的属性:
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为原子性(Atomic)、 一致性(Consistent)、隔离性(Isolated)、持久性(Durable),简称ACID属性,只有这样才能构成一个事务。
原子性:
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:
两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性:
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新 以及修改的资料一次操作完毕,但实际上并不可行。
事务管理的常用语句:
BEGIN TRANSACTION——建立一个事务
COMMITTRANSACTION——提交事务
ROLLBACK TRANSACTION——事务失败时执行回滚操作
SAVE TRANSACTION——保存事务
BEGIN TRANSACTION 和COMMIT TRANSACTION同时使用,用来表示事务的开始和结束。
事务的隔离级别:
事务具有隔离性,不同事务中所使用的时间必须要和其他事务进行隔离,在同一时间可以有很多个事务正在处理数据,但是每个数据在同一时刻只能有一个事务进行操作。如果将数据锁定,使用数据的事务就必须要排队等待,这样可以防止多个事务互相影响。但是如果有几个事务因为锁定了自己的数据,同时又在等待其他事务释放数据,则造成死锁。
为了提高数据的并发使用效率,可以为事务在读取数据时设置隔离状态,SQL Server 2012 中的事务隔离状态由低到高分为5个级别。
未授权读取
也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。
授权读取
,也称为读提交(Read Committed):允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
可重复读取
可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
序列化
序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

深入了解PHP中eol的含義及程式碼範例在PHP程式設計中,eol是一個常見的術語,代表"EndOfLine",即行尾。在不同作業系統中,行尾的表示方式可能不同,這就引出了eol的概念。在Windows系統中,一行的結束由回車符()和換行符()組成,即"";而在Unix/Linux系統中,行尾只由換行符()表示,即""。這樣的差異可能會導致在不同作業系統

WindowsServerBackup是WindowsServer作業系統自帶的功能,旨在協助使用者保護重要資料和系統配置,並為中小型和企業級企業提供完整的備份和復原解決方案。只有執行Server2022及更高版本的使用者才能使用此功能。在本文中,我們將介紹如何安裝、解除安裝或重設WindowsServerBackup。如何重置Windows伺服器備份如果您的伺服器備份遇到問題,備份所需時間過長,或無法存取已儲存的文件,那麼您可以考慮重新設定WindowsServer備份設定。要重設Windows

作為國內領先的短視頻平台,快手擁有大量用戶,私訊功能是用戶之間互動的重要管道。然而,有些用戶可能覺得私訊顯示內容的功能讓他們感到困擾,他們希望能夠選擇性地關閉這個功能。一、怎麼關閉快手私訊顯示內容功能? 1.開啟快手應用,登入個人帳號。 2.進入快手主介面,點選右下角的「我的」按鈕,進入個人中心。 3.在個人中心頁面,點選頭像,進入個人設定。 4.在個人設定頁面,找到「隱私設定」選項,點選進入。 5.在隱私權設定頁面,找到「私訊顯示內容」選項,點選進入。 6.在私訊顯示內容設定頁面,關閉「私訊顯示內容」功能的

WICC幣是什麼? WICC幣是WaykiChainCoin的簡稱,是基於區塊鏈技術的數位貨幣。 WaykiChain作為一條高效、可擴展和安全的公鏈,致力於為企業和開發者提供完善的區塊鏈基礎設施和創新工具。作為WaykiChain生態系統的核心代幣,WICC幣在平台上扮演著重要角色。 WICC幣的特性1.安全可靠:WaykiChain採用DPoS共識演算法,具備可靠的分散式鎖定機制與共識機制,確保了網路的高度安全性。 2.高效可擴展:WaykiChain具備毫秒級的交易確認速度,每秒可處理數千筆交易,並

MySQL事務處理:自動提交與手動提交的差異在MySQL資料庫中,事務是一組SQL語句的集合,要麼全部執行成功,要麼全部執行失敗,保證了資料的一致性和完整性。在MySQL中,事務可以分為自動提交和手動提交,其區別在於事務提交的時機以及對事務的控制範圍。以下將詳細介紹自動提交和手動提交的區別,並給出具體的程式碼範例來說明。一、自動提交在MySQL中,如果沒有顯示

MySQL主機名的意義及具體用法MySQL是一種流行的開源關係型資料庫管理系統,被廣泛應用於各種web應用程式中。在MySQL中,主機名稱是一個重要的概念,它用來指定連接到資料庫伺服器的主機的名稱。在本文中,我們將詳細解釋MySQL主機名稱的含義,以及如何在實際開發中使用它。 MySQL主機名稱的意思:在MySQL中,主機名稱是用來指定允許連線到

MySQL事務的原理及應用場景在資料庫系統中,事務是一組SQL操作的集合,這些操作要麼全部成功執行,要麼全部失敗回滾。 MySQL作為一種常用的關聯式資料庫管理系統,支援事務的特性,能夠確保資料庫中的資料在一致性、隔離性、持久性和原子性方面得到保證。本文將從MySQL事務的基本原理入手,介紹其應用場景,並提供具體的程式碼範例供讀者參考。 MySQL事務的原理:My

事務確保資料庫資料完整性,包括原子性、一致性、隔離性和持久性。 JDBC使用Connection介面提供交易控制(setAutoCommit、commit、rollback)。並發控制機制協調並發操作,使用鎖或樂觀/悲觀並發控制來實現事務隔離性,以防止資料不一致。
