SQL事务全攻略

Jun 07, 2016 pm 05:44 PM
事務 完全な戦略

一 事务的属性 事务具有ACID属性 即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性 原子性 就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全 回滚,全部不保留 一致性 事务完成或者撤销后,都应该

一 事务的属性

事务具有ACID属性
即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性

原子性
  
    就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,香港虚拟主机,要么完全
回滚,全部不保留


一致性
    事务完成或者撤销后,都应该处于一致的状态

隔离性

    多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时,香港虚拟主机,
不合理的存取和不完整的读取数据


永久性
    事务提交以后,所做的工作就被永久的保存下来


二 事务并发处理会产生的问题

丢失更新

     当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、
每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。

脏读
      当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。
      第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。

不可重复读

      当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。
      不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。
      然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。

幻像读

       当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。
       事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,免备案空间,事务的第二次或后续读显示有一行已不存在于原始读中。


三 事务处理类型

自动处理事务

    系统默认每个T-SQL命令都是事务处理   由系统自动开始并提交

隐式事务

     当有大量的DDL 和DML命令执行时会自动开始,并一直保持到用户明确提交为止,切换隐式事务可以用SET IMPLICIT_TRANSACTIONS
     为连接设置隐性事务模式.当设置为 ON 时,SET IMPLICIT_TRANSACTIONS 将连接设置为隐性事务模式。当设置为 OFF 时,则使连接返回到自动提交事务模式


用户定义事务

      由用户来控制事务的开始和结束   命令有: begin tran 、 commit tran  、 rollback tran 命令

分布式事务
      跨越多个服务器的事务称为分布式事务,sql server 可以由DTc microsoft distributed transaction coordinator
      来支持处理分布式事务,可以使用 BEgin distributed transaction 命令启动一个分布式事务处理


四   事务处理的隔离级别

使用SET TRANSACTION ISOLATION LEVEL来控制由连接发出的所有语句的默认事务锁定行为

从低到高依次是

(1)READ UNCOMMITTED

执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。

举例

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ロック待機タイムアウトを超過しました。トランザクションを再起動してください - MySQL エラーの解決方法: トランザクション待機タイムアウト ロック待機タイムアウトを超過しました。トランザクションを再起動してください - MySQL エラーの解決方法: トランザクション待機タイムアウト Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction - MySQL エラーの解決方法: トランザクション待機タイムアウト。MySQL データベースを使用すると、一般的なエラーが発生することがあります: Lockwaittimeoutexceeded;tryrestartingtransaction。このエラーは、トランザクション待機タイムアウトを示します。このエラーは通常、次の場合に発生します。

MySQL トランザクション処理: 自動送信と手動送信の違い MySQL トランザクション処理: 自動送信と手動送信の違い Mar 16, 2024 am 11:33 AM

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

MySQL トランザクションの原則と適用シナリオ MySQL トランザクションの原則と適用シナリオ Mar 02, 2024 am 09:51 AM

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

Java データベース接続はトランザクションと同時実行をどのように処理しますか? Java データベース接続はトランザクションと同時実行をどのように処理しますか? Apr 16, 2024 am 11:42 AM

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

PHP PDO チュートリアル: 基本から習得までの上級ガイド PHP PDO チュートリアル: 基本から習得までの上級ガイド Feb 19, 2024 pm 06:30 PM

1. PDO の概要 PDO は、データベースを操作するためのオブジェクト指向の方法を提供する PHP の拡張ライブラリです。 PDO は、Mysql、postgresql、oracle、SQLServer などのさまざまなデータベースをサポートします。 PDO を使用すると、開発者は統合 API を使用してさまざまなデータベースを操作できるため、さまざまなデータベースを簡単に切り替えることができます。 2. PDO はデータベースに接続します PDO を使用してデータベースに接続するには、まず PDO オブジェクトを作成する必要があります。 PDO オブジェクトのコンストラクターは、データベース タイプ、ホスト名、データベース ユーザー名、およびパスワードの 3 つのパラメーターを受け取ります。たとえば、次のコードは、mysql データベースに接続するオブジェクトを作成します。 $dsn="mysq

MongoDB テクノロジー開発で遭遇するトランザクション管理問題の解決策の分析 MongoDB テクノロジー開発で遭遇するトランザクション管理問題の解決策の分析 Oct 08, 2023 am 08:15 AM

MongoDB テクノロジー開発で遭遇するトランザクション管理問題の解決策の分析 最新のアプリケーションがますます複雑かつ大規模になるにつれて、データのトランザクション処理要件もますます高くなっています。 MongoDB は、人気のある NoSQL データベースとして、データ管理において優れたパフォーマンスとスケーラビリティを備えています。ただし、MongoDB はデータの一貫性とトランザクション管理が比較的弱く、開発者にとって課題となっています。この記事では、MongoDB 開発で遭遇するトランザクション管理の問題を調査し、いくつかの解決策を提案します。

PHP PDO のパワーをマスターする: 高度なクエリと更新 PHP PDO のパワーをマスターする: 高度なクエリと更新 Feb 20, 2024 am 08:24 AM

PHP Data Objects (PDO) 拡張機能は、データベース サーバーとの効率的でオブジェクト指向の対話を提供します。高度なクエリおよび更新機能により、開発者は複雑なデータベース操作を実行できるようになり、パフォーマンスとコードの保守性が向上します。この記事では、PDO の高度なクエリ機能と更新機能を詳しく説明し、その強力な機能をマスターする方法を説明します。高度なクエリ: プレースホルダーとバインドされたパラメーターの使用 プレースホルダーとバインドされたパラメーターは、クエリのパフォーマンスとセキュリティを向上させるための重要なツールです。プレースホルダーでは疑問符 (?) を使用してクエリ内の置換可能なパラメーターを表し、バインド パラメーターを使用すると各パラメーターのデータ型と値を指定できます。これらの方法を使用すると、データベース エンジンが事前にクエリを最適化できるため、SQL インジェクション攻撃を回避し、パフォーマンスを向上させることができます。 // プレースホルダー $stmt=$ を使用します

安定したスケーラブルなシステムを構築するためのJava EJBアーキテクチャの詳細な説明 安定したスケーラブルなシステムを構築するためのJava EJBアーキテクチャの詳細な説明 Feb 21, 2024 pm 01:13 PM

EJBとは何ですか? EJB は、サーバー側のエンタープライズクラス Java アプリケーションを構築するためのコンポーネントのセットを定義する Java Platform, Enterprise Edition (JavaEE) 仕様です。 EJB コンポーネントはビジネス ロジックをカプセル化し、トランザクション、同時実行性、セキュリティ、その他のエンタープライズ レベルの懸念事項を処理するための一連のサービスを提供します。 EJB アーキテクチャ EJB アーキテクチャには、次の主要コンポーネントが含まれています。 Enterprise Bean: これは、EJB コンポーネントの基本的な構成要素であり、ビジネス ロジックと関連データをカプセル化します。 EnterpriseBean は、ステートレス (セッション Bean とも呼ばれます) またはステートフル (エンティティ Bean とも呼ばれます) にすることができます。セッション コンテキスト: セッション コンテキストは、セッション ID やクライアントなど、現在のクライアント インタラクションに関する情報を提供します。

See all articles