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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WICCコインとは何ですか? WICCコインはWaykiChainCoinの略称で、ブロックチェーン技術をベースにしたデジタル通貨です。 WaykiChain は、効率的でスケーラブルで安全なパブリック チェーンとして、企業や開発者に完全なブロックチェーン インフラストラクチャと革新的なツールを提供することに尽力しています。 WaykiChain エコシステムの中核トークンとして、WICC Coin はプラットフォーム上で重要な役割を果たします。 WICC通貨の特徴 1. 安全性と信頼性: WaykiChainはDPoSコンセンサスアルゴリズムを採用し、信頼性の高い分散ロックメカニズムとコンセンサスメカニズムを備え、高度なネットワークセキュリティを保証します。 2. 効率的でスケーラブル: WaykiChain はミリ秒レベルのトランザクション確認速度を備え、1 秒あたり数千のトランザクションを処理できます。

PHP における eol の意味とコード例を深く理解する PHP プログラミングにおいて、eol は行の終わりである「EndOfLine」を表す一般的な用語です。オペレーティング システムが異なると、行末の表現が異なる場合があり、これが eol の概念につながります。 Windows システムでは、行の終わりはキャリッジ リターン () とライン フィード ()、つまり "" で構成されますが、Unix/Linux システムでは、行の終わりはライン フィード () だけで表されます。は、 ""。このような違いにより、オペレーティング システムが異なる場合があります。

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Kuaishou は中国有数のショートビデオプラットフォームとして多くのユーザーを抱えており、プライベートメッセージ機能はユーザー間の交流の重要なチャネルとなっています。ただし、プライベート メッセージにコンテンツを表示する機能が煩わしく、この機能を選択的にオフにできることを希望するユーザーもいるかもしれません。 1. Kuaishou プライベートメッセージの内容表示機能をオフにするにはどうすればよいですか? 1. Kuaishou アプリを開き、個人アカウントにログインします。 2. Kuaishou メインインターフェイスに入り、右下隅の「My」ボタンをクリックしてパーソナルセンターに入ります。 3. 個人センター ページで、アバターをクリックして個人設定を入力します。 4. 個人設定ページで、「プライバシー設定」オプションを見つけてクリックして入力します。 5. プライバシー設定ページで、[プライベート メッセージにコンテンツを表示する] オプションを見つけてクリックして入力します。 6. プライベートメッセージ表示内容設定ページで、「プライベートメッセージ表示内容」機能をオフにします

MySQL ホスト名の意味と具体的な使用法 MySQL は、さまざまな Web アプリケーションで広く使用されている、人気のあるオープン ソースのリレーショナル データベース管理システムです。 MySQL では、ホスト名は重要な概念であり、データベース サーバーに接続するホストの名前を指定するために使用されます。この記事では、MySQLのホスト名の意味と実際の開発での使い方について詳しく解説します。 MySQL ホスト名の意味: MySQL では、ホスト名はどの接続が許可されるかを指定するために使用されます。

MySQL トランザクション処理: 自動送信と手動送信の違い。MySQL データベースでは、トランザクションは一連の SQL ステートメントです。すべての実行が成功するか、すべての実行が失敗するかのいずれかで、データの一貫性と整合性が保証されます。 MySQL では、トランザクションは自動送信と手動送信に分けられ、その違いはトランザクション送信のタイミングとトランザクションの制御範囲にあります。以下では、自動送信と手動送信の違いを詳しく紹介し、具体的なコード例を示して説明します。 1. MySQL が表示されない場合は自動的に送信する

MySQL トランザクションの原理と適用シナリオ データベース システムでは、トランザクションは一連の SQL 操作であり、これらの操作はすべて正常に実行されるか、すべて失敗してロールバックされます。一般的に使用されるリレーショナル データベース管理システムとして、MySQL はトランザクション特性をサポートし、データベース内のデータの一貫性、分離性、耐久性、アトミック性を保証できます。この記事では、MySQL トランザクションの基本原則から始めて、そのアプリケーション シナリオを紹介し、読者の参考となる具体的なコード例を示します。 MySQL トランザクションの原則: My

トランザクションは、原子性、一貫性、分離性、耐久性などのデータベース データの整合性を保証します。 JDBC は、Connection インターフェイスを使用してトランザクション制御 (setAutoCommit、コミット、ロールバック) を提供します。同時実行制御メカニズムは、ロックまたはオプティミスティック/ペシミスティック同時実行制御を使用して同時操作を調整し、トランザクションの分離を実現してデータの不整合を防ぎます。
