MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

15.7.2.1 トランザクション分離レベル

トランザクションの分離は、データベース処理の基礎の 1 つです。 分離とは、頭字語の ACID における I です。分離レベルは、複数のトランザクションで変更が行われ、クエリーが同時に実行される場合に、パフォーマンスと信頼性、一貫性および結果の再現性のバランスを微調整する設定です。

InnoDB では、SQL:1992 標準に記載された 4 つのトランザクション分離レベル (READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE) がすべて提供されます。 InnoDB のデフォルトの分離レベルは REPEATABLE READ です。

ユーザーは SET TRANSACTION ステートメントを使用して単一のセッションまたは後続のすべての接続の分離レベルを変更できます。 すべての接続に対するサーバーのデフォルトの分離レベルを設定するには、コマンド行上、またはオプションファイル内で --transaction-isolation オプションを使用します。 分離レベルおよびレベル設定構文についての詳細は、セクション13.3.7「SET TRANSACTION ステートメント」を参照してください。

InnoDB は、ここで説明されている各トランザクション分離レベルを、異なるロックの方法を使用してサポートしています。 ACID 準拠が重要な要件である重要なデータに対する操作の場合は、デフォルトの REPEATABLE READ レベルを使用して高度な一貫性を適用できます。 あるいは、正確な一貫性や繰り返し可能な結果がロックのためのオーバーヘッドの量の最少化ほど重要でない一括レポートなどの状況では、READ COMMITTED や場合によっては READ UNCOMMITTED を使用して一貫性のルールを緩和できます。 SERIALIZABLEREPEATABLE READ よりさらに厳密なルールを適用し、主に XA トランザクションのほか、並列性やデッドロックに関する問題のトラブルシューティングなどの特殊な状況で使用されます。

次のリストは、MySQL が各種のトランザクションレベルをどのようにサポートするかについて説明しています。 このリストは、もっとも一般的に使用されるレベルから使用頻度の低い順に並べられています。