2.9.2 HADBがサポートしているトランザクション隔離性水準
HADBでは,次に示すトランザクション隔離性水準をサポートしています。
-
READ COMMITTED
-
REPEATABLE READ
(1) READ COMMITTED
SQL文を実行した時点(検索の場合はカーソルオープン時点)でコミット済みのデータがSQL文の処理対象になります。そのため,トランザクション内で同じSELECT文を複数回実行した場合,ほかのトランザクションによるデータ更新によって,SELECT文の実行結果が異なることがあります。
(2) REPEATABLE READ
REPEATABLE READのトランザクション内で同じ探索条件となるSQL文を繰り返し実行した場合,そのSQL文の処理対象となるデータは,他トランザクションに関係なく常に同じものとなります。
なお,SQL文の処理対象となるデータは,次に示す表に従って変わります。
項番 |
データが格納されているチャンク |
SQL文の処理対象となるデータ |
---|---|---|
1 |
|
「表2‒10 チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」を参照してください。 |
2 |
自トランザクションの実行中に,バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンクで,アーカイブ状態ではないチャンク |
なし※ |
- 注※
-
自トランザクションの実行中に,次に示す2つのコマンドが実行された場合,SQL文の処理対象となるデータは,「表2‒9 データが格納されているチャンクとSQL文の処理対象となるデータの関係」および「表2‒10 チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」に従って変わります。
-
バックグラウンドインポート機能を使用したadbimportコマンド
-
adbimportコマンド実行時に作成されたチャンクを含む,複数のチャンクをマージするadbmergechunkコマンド
例を次の図に示します。
図2‒35 コマンドの実行に伴う自トランザクションの処理対象となるデータの変化 -
項番 |
チャンク内のデータを更新したトランザクション |
SQL文の処理対象となるデータ |
|
---|---|---|---|
1 |
自トランザクション |
すべてのデータ |
|
2 |
他トランザクション |
SQL文による更新
|
自トランザクション開始時にコミット済みのデータ |
3 |
adbimportコマンドによるデータの追加 |
adbimportコマンドの処理が正常終了したときのデータ |
|
4 |
PURGE CHUNK文による更新 |
PURGE CHUNK文が正常終了したときのデータ |
|
5 |
TRUNCATE TABLE文による更新 |
TRUNCATE TABLE文が正常終了したときのデータ |
|
6 |
adbchgchunkstatusコマンドによるチャンクの状態変更 |
SQL文の実行開始時(検索の場合はカーソルオープン時)に通常状態のチャンクのデータ |
- 重要
-
チャンクIDを指定した検索(adbsqlコマンドのサブコマンド#GETDATAなど)を実行した場合は,トランザクション隔離性水準がREPEATABLE READにならないことがあります。詳細については,「11.4.9 チャンクをマージする方法(チャンク数を減らす方法)」の「(4) adbmergechunkコマンド実行中に検索対象となるチャンク」を参照してください。