MySQL は、トランザクション処理をサポートする、広く使用されているリレーショナル データベース管理システムです。トランザクションは、論理単位として一緒に実行される一連のデータベース操作です。トランザクションの一貫性と分離を確保するために、MySQL はさまざまなトランザクション分離レベルを提供します。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.16 バージョン、DELL G3 コンピューター。
MySQL は、トランザクション処理をサポートする、広く使用されているリレーショナル データベース管理システムです。トランザクションは、論理単位として一緒に実行される一連のデータベース操作です。トランザクションの一貫性と分離を確保するために、MySQL はさまざまなトランザクション分離レベルを提供します。
トランザクション分離レベルは、トランザクション内の操作と他のトランザクション間の可視性と影響範囲を定義します。 MySQL は 4 つのトランザクション分離レベルを提供します: READ UNCOMMITTED (コミットされていない読み取り)、READ COMMITTED (コミットされた読み取り)、REPEATABLE READ (繰り返し読み取り) と SERIALIZABLE (シリアル化可能)。これらの分離レベルはより高度な分離を提供しますが、同時実行パフォーマンスのオーバーヘッドも高くなる可能性があります。
デフォルトでは、MySQL のトランザクション分離レベルは REPEATABLE です 読む。このレベルでは、トランザクションは一貫したビュー、つまりトランザクションが開始された時点でのデータベースのスナップショットを作成します。これは、トランザクションの実行中に表示されるデータが、他のトランザクションが同時に変更するデータとは異なることを意味します。他のトランザクションが一部のデータを変更したとしても、トランザクションが独自の整合性ビューで参照できるのは、トランザクション開始時のスナップショットのままです。
REPEATABLE READ レベルでは、トランザクションは次の点を保証できます:
1. 読み取られたデータはトランザクションの開始時と一致しており、トランザクションの実行中に変更されません。
2. トランザクション中に他の並列トランザクションによって行われた変更は、トランザクションには認識されず、トランザクションによって読み取られるデータには影響しません。
3. トランザクションによって他のトランザクションに加えられた変更は表示されず、他の並列トランザクションはトランザクション内のコミットされていないデータを読み取ることができません。
繰り返し可能 READ レベルの利点は、高いデータ一貫性と分離性が提供され、複数の同時トランザクションが同じデータを読み取るシナリオに適していることです。ただし、同時実行パフォーマンスのオーバーヘッドやロック競合が発生する可能性もあります。
実際のアプリケーションでは、特定のビジネス ニーズとパフォーマンス要件に基づいて、適切なトランザクション分離レベルを選択できます。より高い同時実行パフォーマンスとより低いロック競合が必要な場合は、トランザクション分離レベルを下げることを検討できます。データの一貫性と分離にさらに注意を払う場合は、より高いトランザクション分離レベルを選択できます。
MySQL には、トランザクション分離レベルを設定するためのステートメントが用意されており、トランザクションの開始前またはトランザクション内で使用できます。たとえば、次のステートメントを使用してトランザクション分離レベルを READ COMMITTED に設定できます:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
つまり、MySQL のデフォルトのトランザクション分離レベルは REPEATABLE です。 READ は、より高いデータの一貫性と分離を提供しますが、同時実行パフォーマンスのオーバーヘッドが高くなる可能性があります。特定のアプリケーション シナリオに応じて、適切なトランザクション分離レベルを柔軟に選択できます。
以上がmysql のデフォルトのトランザクション分離レベルは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。