ホームページ  >  記事  >  バックエンド開発  >  PHPトランザクションとは何ですか

PHPトランザクションとは何ですか

王林
王林オリジナル
2019-09-20 11:54:304415ブラウズ

PHPトランザクションとは何ですか

PHP トランザクションの 4 つの主要な機能

トランザクションは、アトミックな SQL クエリのセット、または独立した作業単位です。

原子性 (原子性):

トランザクションはデータベースの作業の論理単位であり、データベースに対するすべての変更は実行されるか、または実行されません。

一貫性:

トランザクションの前後で、データベースの状態はすべての整合性制約を満たしています。

分離:

同時に実行されるトランザクションは分離され、一方が他方に影響を与えることはありません。同時に実行され、同じ機能を実行する 2 つのトランザクションがある場合、トランザクション分離により、システム内の各トランザクションは、そのトランザクションのみがシステムを使用していると認識されます。このプロパティはシリアル化と呼ばれることもあります。トランザクション操作間の混乱を避けるために、同じデータに対するリクエストが同時に 1 つだけになるように、リクエストをシリアル化または逆シリアル化する必要があります。

データベースの分離レベルを設定することにより、さまざまな分離効果を実現できます。

永続性 (耐久性):

トランザクションの完了後、トランザクションによってデータベースに加えられた変更はデータベースに永続的に保存され、ロールバックされません。

PHP トランザクションの同時実行の問題

1. ダーティ リーディング

トランザクション A は、トランザクション B によって更新されたデータを読み取り、その後B は操作をロールバックし、A によって読み取られたデータはダーティ データです。

2. 反復不可能な読み取り

トランザクション A は同じデータを複数回読み取り、トランザクション B はトランザクション A の複数回の読み取り中にデータを更新します。トランザクション A が同じデータを複数回読み取ると、一貫性のない結果が生じます。

3. Phantom reading

システム管理者 A は、データベース内のすべての生徒の成績を特定のスコアから ABCDE 成績に変更しましたが、システム管理者 B はこの時点で成績を変更しました。時間 特定のスコアを持つレコードが挿入されました。システム管理者 A が変更を完了すると、まだ変更されていない別のレコードがあることに気づきました。まるで幻覚のような状態でした。これをファントム リーディングと呼びます。

要約: 非反復読み取りとファントム読み取りは混同されやすいです。非反復読み取りは変更に焦点を当て、ファントム読み取りは追加または削除に焦点を当てます。非反復読み取りの問題を解決するには、条件を満たす行をロックするだけで済みます。また、ファントム読み取りの問題を解決するには、テーブルをロックする必要があります。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がPHPトランザクションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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