説明
トランザクション分離レベルを設定します。
OceanBaseデータベースのMySQLモードは、読み取りコミットとリピータブルリードの2つの分離レベルをサポートしています。デフォルトの分離レベルは読み取りコミットです。
トランザクション実行中に分離レベルを設定することはできません。その場合、エラーが発生します。
ERROR:OBE-01453: SET TRANSACTION must be first statement of transactionシリアライズ可能な分離レベルを有効にするには、グローバルタイムスタンプサービス(Global Timestamp Service, GTS)が有効であることを確認する必要があります。
セッションはセッションレベルのトランザクション分離レベルを維持します。トランザクション開始時にセッションレベルのトランザクション分離レベルを取得し、このレベルはトランザクションレベルの分離レベルによって上書きされることがあります。
構文
SET [GLOBAL | SESSION | LOCAL] TRANSACTION trans_opt;
trans_opt:
transaction_access_mode
| isolation_level
| transaction_access_mode, isolation_level
| isolation_level, transaction_access_mode
transaction_access_mode:
[READ ONLY | READ WRITE]
isolation_level:
ISOLATION LEVEL {
READ UNCOMMITED
| READ COMMITED
| REPEATABLE READ
| SERIALIZABLE
}
パラメータの説明
パラメータ |
説明 |
|---|---|
| GLOBAL | SESSION | LOCAL | トランザクション分離レベルの適用範囲を宣言します。デフォルトは空です。
|
| READ ONLY | READ WRITE | トランザクションの読み書きモードを指定します。 |
| READ UNCOMMITED | トランザクション分離レベルを未コミット読み取りに指定します。 説明 現在のバージョンでは、トランザクション分離レベルを未コミット読み取りに設定することはサポートされていません。 |
| READ COMMITED | トランザクション分離レベルをコミット済み読み取りに指定します。 |
| REPEATABLE READ | トランザクション分離レベルをリピータブルリードに設定します。 |
| SERIALIZABLE | トランザクション分離レベルをシリアライズ可能に設定します。 説明 OceanBaseデータベースは、sysテナントのトランザクション分離レベルをシリアライズ可能に設定することをサポートしていません。これは、sysテナントでグローバルタイムスタンプ(GTS)を有効にできないためです。 |
例
現在のセッションにおける次のトランザクションのトランザクション分離レベルを読み取りコミットに設定します。
obclient> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;現在のセッションのトランザクション分離レベルをリピータブルリードに設定します。
obclient> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;