ホームページ >よくある問題 >mysql のデフォルトのトランザクション分離レベルは何ですか?

mysql のデフォルトのトランザクション分離レベルは何ですか?

zbt
zbtオリジナル
2023-08-08 11:01:174762ブラウズ

Mysql のデフォルトのトランザクション分離レベルは、Read Uncommitted、Read Committed、Repeatable Read、および Serializable です。 1. Read Uncommitted (この分離レベルでは、トランザクションは他のトランザクションのコミットされていないデータを読み取ることができることを意味します)、2. Read Committed (この分離レベルでは、トランザクションは送信されたデータのみを読み取ることができることを意味します)、3. 反復読み取りなど。

mysql のデフォルトのトランザクション分離レベルは何ですか?

MySQL には、Read Uncommitted (コミットされていない読み取り)、Read Committed (コミットされた読み取り)、Repeatable という 4 つのデフォルトのトランザクション分離レベルがあります。 Read (繰り返し読み取り) と Serializable (シリアル化)。各分離レベルについては、以下で詳しく紹介して説明します。

1. コミットされていない読み取り: この分離レベルでは、トランザクションが他のトランザクションからコミットされていないデータを読み取ることができることを意味します。この分離レベルは最も低く、ダーティ読み取り (ダーティ読み取り) を引き起こします。 読んでください)質問。ダーティ リードとは、トランザクションがコミットされていない別のトランザクションからデータを読み取った後、トランザクションがロールバックされると、読み取られたデータが無効になることを意味します。

2.読む コミット済み: この分離レベルでは、トランザクションは送信されたデータの読み取りのみができることを意味します。この分離レベルはダーティ読み取りの問題を解決できますが、反復不可能な読み取りが発生します。 読んでください)質問。非反復読み取りとは、トランザクション内で同じデータが複数回読み取られると、読み取り結果が不一致になることを意味します。

3. 再現可能 読み取り: この分離レベルでは、トランザクションが同じデータを繰り返し読み取ることができ、読み取り結果が常に一貫していることを意味します。この分離レベルでは、反復不可能な読み取りの問題は解決できますが、ファントム読み取り (ファントム読み取り) が発生します。 読んでください)質問。ファントム読み取りとは、トランザクション内で同じクエリが複数回実行され、条件を満たす新しいデータが結果セットに追加されることを意味します。

4. シリアル化可能: この分離レベルでは、トランザクションは厳密に順番に実行され、同時実行は許可されないことを意味します。この分離レベルはファントム読み取りの問題を解決できますが、システムの同時実行パフォーマンスに影響します。

上記の 4 つの分離レベルに加えて、MySQL はデフォルトで特別な分離レベル、つまりデフォルト分離レベル (デフォルト) も提供します。デフォルトの分離レベルは、サーバーのグローバル変数 sql_mode によって決まります。 sql_mode が STRICT_ALL_TABLES、STRICT_TRANS_TABLES、または STRICT_ALL_TABLES と STRICT_TRANS_TABLES の組み合わせの場合、デフォルトの分離レベルは REPEATABLE です。 読む。 sql_mode に上記の値が含まれていない場合、デフォルトの分離レベルは READ COMMITTED です。

実際のアプリケーションでは、適切な分離レベルを選択することが非常に重要です。アプリケーションのデータ整合性に対するより高い要件がある場合は、Repeatable などのより高い分離レベルを選択できます。 読み取りまたはシリアル化可能。データの整合性に対する要件が低く、同時実行パフォーマンスに対する要件が高い場合は、Read Committed などの低い分離レベルを選択できます。

さらに、MySQL はトランザクション分離レベルを設定する方法も提供します。トランザクション分離レベルは、セッション レベルまたはグローバル レベルの変数transaction_isolationを設定することで変更できます。たとえば、次のステートメントを使用して分離レベルを読み取りに変更できます。 コミット済み:

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

要約すると、MySQL のデフォルトのトランザクション分離レベルには、Read Uncommitted、Read Committed、Repeatable が含まれます。 読み取り、シリアル化可能、およびデフォルトの分離レベル。データの一貫性を確保し、同時実行パフォーマンスを向上させるには、適切な分離レベルを選択することが重要です。

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

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