Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


2.9.2 HADBがサポートしているトランザクション隔離性水準

HADBでは,次に示すトランザクション隔離性水準をサポートしています。

〈この項の構成〉

(1) READ COMMITTED

SQL文を実行した時点(検索の場合はカーソルオープン時点)でコミット済みのデータがSQL文の処理対象になります。そのため,トランザクション内で同じSELECT文を複数回実行した場合,ほかのトランザクションによるデータ更新によって,SELECT文の実行結果が異なることがあります。

(2) REPEATABLE READ

REPEATABLE READのトランザクション内で同じ探索条件となるSQL文を繰り返し実行した場合,そのSQL文の処理対象となるデータは,他トランザクションに関係なく常に同じものとなります。

なお,SQL文の処理対象となるデータは,次に示す表に従って変わります。

表2‒9 データが格納されているチャンクとSQL文の処理対象となるデータの関係

項番

データが格納されているチャンク

SQL文の処理対象となるデータ

1

  • 実表の定義時に作成されたチャンク

  • TRUNCATE TABLE文実行時に作成されたチャンク

  • -dオプションを指定したadbimportコマンド実行時に作成されたチャンク

  • 自トランザクションの実行前に,バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンク

  • adbmergechunkコマンド実行時に作成されたチャンク(マージ先チャンク)

  • adbchgchunkstatusコマンドで状態を変更されたチャンク

  • 自トランザクションの実行中に,バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンクで,アーカイブ状態のチャンク

表2‒10 チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」を参照してください。

2

自トランザクションの実行中に,バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンクで,アーカイブ状態ではないチャンク

なし

注※

自トランザクションの実行中に,次に示す2つのコマンドが実行された場合,SQL文の処理対象となるデータは,「表2‒9 データが格納されているチャンクとSQL文の処理対象となるデータの関係」および「表2‒10 チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」に従って変わります。

  • バックグラウンドインポート機能を使用したadbimportコマンド

  • adbimportコマンド実行時に作成されたチャンクを含む,複数のチャンクをマージするadbmergechunkコマンド

例を次の図に示します。

図2‒34 コマンドの実行に伴う自トランザクションの処理対象となるデータの変化

[図データ]

表2‒10 チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係

項番

チャンク内のデータを更新したトランザクション

SQL文の処理対象となるデータ

1

自トランザクション

すべてのデータ

2

他トランザクション

SQL文による更新

  • INSERT

  • UPDATE

  • DELETE

自トランザクション開始時にコミット済みのデータ

3

adbimportコマンドによるデータの追加

adbimportコマンドの処理が正常終了したときのデータ

4

PURGE CHUNK文による更新

PURGE CHUNK文が正常終了したときのデータ

5

TRUNCATE TABLE文による更新

TRUNCATE TABLE文が正常終了したときのデータ

6

adbchgchunkstatusコマンドによるチャンクの状態変更

adbchgchunkstatusコマンドが正常終了したときのデータ

重要

チャンクIDを指定した検索(adbsqlコマンドのサブコマンド#GETDATAなど)を実行した場合は,トランザクション隔離性水準がREPEATABLE READにならないことがあります。詳細については,「11.4.9 チャンクをマージする方法(チャンク数を減らす方法)」の「(4) adbmergechunkコマンド実行中に検索対象となるチャンク」を参照してください。