17.00 - 17.05 - デフォルトのセッション トランザクション分離レベル - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

どのセッションの場合でも、初期のデフォルト トランザクション分離レベルはSERIALIZABLEです。この文脈では、これはいかなるセッションの場合でもデフォルトの読み取り専用ロッキング強度はREADだというのと同じことになります。これはすべてのSELECT操作に適用されます。スタンドアロンSELECTリクエストであるか、通常のSELECTSubquery であるか、あるいはDELETE、INSERT、またはUPDATEリクエスト内に埋め込まれたSELECTSubquery であるかには関係ありません。

SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVELを使用すると、現行セッションのDELETEリクエスト、INSERTリクエスト、またはUPDATEリクエスト内に埋め込まれたSELECT操作のデフォルトの読み取り専用ロックの強度をACCESSに設定したり、ACCESSに設定した後にREADに戻すことができます。

つまり、セッション レベルの分離レベルをREAD UNCOMMITTEDに変更すると、DELETE、INSERT、MERGE、またはUPDATEリクエスト内に埋め込まれたすべてのSELECTリクエストのデフォルトの読み取り専用ロッキング強度に影響し、DBS制御フラグAccessLockForUncomReadの値がTRUEに設定されている場合のみ、デフォルトのロック強度がACCESSになることになります。AccessLockForUncomReadがFALSEに設定されている場合、それらのSELECT操作のデフォルトの読み取り専用ロッキング強度はREADです。

セッションのデータ操作リクエスト内に埋め込みSELECTリクエストのデフォルトのロック強度をREADからACCESSにダウングレードできるようにするには、READ UNCOMMITTEDを指定し、DBS制御フラグのAccessLockForUncomReadをTRUEに設定する必要があります。この状況でのデータ操作リクエストとは、任意のDELETEリクエスト、INSERTリクエスト、MERGEリクエスト、またはUPDATEリクエストです。

分離レベルの設定値 DBS制御フラグAccessLockForUncomReadの設定値 結果
READ UNCOMMITTED

RU

FALSE 埋め込みSELECTリクエストのロック強度は、READからACCESSにダウングレードされない。
SERIALIZABLE

SR

TRUE

次の表は、この情報を少し異なる方法で示したものです。

トランザクション分離レベル DBS制御AccessLockForUncomReadフラグの設定 外部SELECTおよび通常SELECTSubquery 操作のデフォルトのロック強度 DELETE、INSERT、MERGE、またはUPDATEリクエスト内に埋め込まれたSELECT操作のデフォルトのロック強度
SERIALIZABLE FALSE READ READ
TRUE READ
READ UNCOMMITTED FALSE READ
TRUE ACCESS

デフォルト セッション分離レベルがSERIALIZABLEかREAD UNCOMMITTEDかに関係なく、最適化ルーチンは暗黙的に読み取り専用操作のロッキング レベル(行ハッシュ、ビュー、テーブルのいずれか)を指定することに注意してください。分離レベルはロッキング レベルではなくロッキング強度に影響します。

ロッキング レベルは、LOCKINGリクエスト修飾子を使用しないと明示的に指定できません。詳細については、Teradata Vantage™ - SQLデータ操作言語、B035-1146を参照してください。