13.19.4 データ操作と整合性

被参照表及び参照表に対する操作系SQL(PURGE TABLE文を除きます)による更新,追加,又は削除は,HiRDBがSQL実行時にチェックし,整合性を保証します。ただし,表13-20及び表13-21に示す操作をした場合,整合性を保証できなくなることがあります。pd_check_pendingオペランドにUSEを指定していて,これらの操作をした場合,参照表は検査保留状態になります。

表13-20 整合性を保証できなくなる場合の,被参照表に対する操作とデータ不整合の発生条件

表又はRDエリアに対する操作データ不整合の発生条件
データベース作成ユティリティ(pdload)作成モード(-dオプション指定)のデータロードデータロードした主キー構成列中に,参照表の外部キー構成列と同じ値を持つ行を含まない場合
データベース再編成ユティリティ(pdrorg)リロード(-k reld指定)リロードした主キー構成列中に,参照表の外部キー構成列と同じ値を持つ行を含まない場合
再編成(-k rorg指定)UOCを使用して,参照表の外部キー構成列の値と同じ値の行を削除した場合
データベース構成変更ユティリティ(pdmod)RDエリアの再初期化(initialize rdarea)参照表が,再初期化したRDエリアと異なるRDエリアに格納されている場合
更新可能なオンライン再編成の追い付き反映
(pdorendコマンド)
参照関係がある表に対して,更新可能なオンライン再編成運用中に,カレントデータベースのレプリカRDエリアとオリジナルRDエリアで次に示す(1)~(4)のどれかの操作をした場合(追い付き反映処理後にデータ不整合になる)
(1)次の順序で操作した場合
1.レプリカRDエリアの参照表にデータを挿入する
2.オリジナルRDエリアの披参照表で,1.で挿入した外部キーと同じ値の行を削除する
(2)次の順序で操作した場合
1.レプリカRDエリアの参照表の外部キーのデータを更新する
2.オリジナルRDエリアの披参照表で,1.で更新した外部キーと同じ値の行を削除する
(3)次の順序で操作した場合
1.レプリカRDエリアの披参照表のデータを削除する
2.オリジナルRDエリアの参照表に,1.で削除した主キーと同じ値の行を挿入する
(4)次の順序で操作した場合
1.レプリカRDエリアの披参照表のデータを更新する
2.オリジナルRDエリアの参照表に1.で更新する前の主キーと同じ値の行を挿入する
PURGE TABLE文参照表にデータが存在する場合
ALTER TABLEによる表の分割格納条件の変更RDエリアの分割や統合の結果,参照表の外部キー構成列と同じ値を持つ行を含まない場合
注※
更新可能なオンライン再編成の運用については,マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 8」を参照してください。

表13-21 整合性を保証できなくなる場合の,参照表に対する操作とデータ不整合の発生条件

表又はRDエリアに対する操作データ不整合の発生条件
データベース作成ユティリティ(pdload)データロードデータロードした外部キー構成列中に,被参照表の主キー構成列と同じ値を持つ行がない場合
データベース再編成ユティリティ(pdrorg)リロード(-k reld指定)リロードした外部キー構成列中に,被参照表の主キー構成列と同じ値を持つ行がない場合
更新可能なオンライン再編成の追い付き反映
(pdorendコマンド)
参照関係がある表に対して,更新可能なオンライン再編成運用中に,カレントデータベースのレプリカRDエリアとオリジナルRDエリアで次に示す(1)~(5)のどれかの操作をした場合(追い付き反映処理後にデータ不整合になる)
(1)次の順序で操作した場合
1.レプリカRDエリアの参照表にデータを挿入する
2.オリジナルRDエリアの披参照表で,1.で挿入した外部キーと同じ値の行を削除する
(2)次の順序で操作した場合
1.レプリカRDエリアの参照表の外部キーのデータを更新する
2.オリジナルRDエリアの披参照表で,1.で更新した外部キーと同じ値の行を削除する
(3)次の順序で操作した場合
1.レプリカRDエリアの披参照表のデータを削除する
2.オリジナルRDエリアの参照表に,1.で削除した主キーと同じ値の行を挿入する
(4)次の順序で操作した場合
1.レプリカRDエリアの披参照表のデータを更新する
2.オリジナルRDエリアの参照表に1.で更新する前の主キーと同じ値の行を挿入する
(5)次の操作をした場合
レプリカRDエリアの参照表に,データベース作成ユティリティ(pdload)で,データ不整合となる操作をしたとき
注※
更新可能なオンライン再編成の運用については,マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 8」を参照してください。
<この項の構成>
(1) 操作対象の表が分割表の場合
(2) データ不整合が発生する可能性があるそのほかの条件

(1) 操作対象の表が分割表の場合

操作対象の表が分割表で,表中に不整合データがある場合,ユティリティの実行によって,不整合データが,格納されているRDエリアを移動することがあります。例えば,RDエリア1,2,及び3に分割格納されている表で,不整合データがRDエリア1にあるとき,ユティリティの実行によって,不整合データがRDエリア3に移動することがあります。不整合データのRDエリアの移動が発生する条件を次の表に示します。

表13-22 操作対象が分割表の場合,表中の不整合データがRDエリアを移動する条件

表又はRDエリアに対する操作表中の不整合データがRDエリアを移動する条件
データベース再編成ユティリティ(pdrorg)再編成(-k rorg指定)フレキシブルハッシュ分割表,又は第2次元分割列がフレキシブルハッシュ分割のマトリクス分割表に対して次の手順で操作する場合
  1. RDエリア単位でデータロードをする
  2. HiRDB/シングルサーバの場合,表単位に再編成を実行する
    HiRDB/パラレルサーバの場合,-gオプションを指定して表単位に再編成を実行する
リバランスユティリティ(pdrbal)不整合データがある表に対して,RDエリアを追加してリバランスユティリティ(pdrbal)を実行する場合
注※
pd_check_pendingオペランドにUSEを指定していて,操作対象表が検査保留状態の場合は実行できません。

(2) データ不整合が発生する可能性があるそのほかの条件

次の条件をすべて満たす場合も,データ不整合が発生することがあるため,データの整合性を確認する必要があります。データの整合性確認手順については,「13.19.5 表の整合性確認手順」を参照してください。これらの条件は参照制約動作がRESTRICTでもCASCADEでも同じです。

被参照表及び参照表を操作する場合,上記条件が重ならないようにしてください。なお,それぞれのトランザクションで,操作対象の表に対してLOCK文の共用モード又は排他モードで排他制御することでデータの整合性は保証できます。ただし,同時実行性は低下します。