トランザクション分離レベルの構成
COM+ を使用すると、開発者は構成可能なトランザクション分離レベルを許可することで、アプリケーションをより詳細に制御できます。 COM+ 1.5 より前のバージョンの COM+ では、常にトランザクションに最高レベルの分離が使用されています。 このレベルでは、データの整合性が常に保持されていることが保証されますが、大規模なデータベースで多くのトランザクションを実行する必要がある場合、タイムアウトなどのパフォーマンスの問題につながる可能性があります。 構成可能な分離レベルを使用すると、経験豊富な開発者はコンカレンシーを向上させ、パフォーマンスとスケーラビリティを向上させることができます。
トランザクション分離レベルでは次の制御を行います。
Level | 説明 |
---|---|
シリアル化された | 現在のトランザクションによって読み取られたデータは、現在のトランザクションが完了するまで、別のトランザクションで変更することはできません。 現在のトランザクションに影響を与える新しいデータは挿入できません。 これは最も安全な分離レベルであり、既定です。 |
REPEATABLE READ | 現在のトランザクションによって読み取られたデータは、現在のトランザクションが完了するまで、別のトランザクションで変更することはできません。 トランザクション中に、任意の種類の新しいデータを挿入できます。 |
READ COMMITTED | トランザクションは、コミットされていない別のトランザクションによって変更されているデータを読み取ることができません。 これは、Azure SQL データベースの既定の分離レベルです。 |
READ UNCOMMITTED | トランザクションは、別のトランザクションによって変更されている場合でも、任意のデータを読み取ることができます。 これは最も安全性の低い分離レベルですが、コンカレンシーが最も高くなります。 |
任意 | 任意の分離レベルがサポートされています。 この設定は、競合を回避するためにダウンストリーム コンポーネントで最も一般的に使用されます。 この設定は、ダウンストリーム コンポーネントを、その即時アップストリーム コンポーネントの分離レベル以下の分離レベルで構成する必要があるために役立ちます。 したがって、分離レベルが Any として構成されているダウンストリーム コンポーネントでは、常にその即時アップストリーム コンポーネントが使用するのと同じ分離レベルが使用されます。 トランザクション内のルート オブジェクトの分離レベルが Any に構成されている場合、その分離レベルはシリアル化されます。 |
Note
ダウンストリーム コンポーネントがアップストリーム コンポーネントよりも高い分離レベルで構成され、トランザクションに参加しようとすると、エラーが発生し、トランザクションが中止されます。
関連トピック