スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)
SQLやユティリティの実行などで表間の参照整合性を保証できなくなった場合,HiRDBは参照表に対するデータ操作を制限します。このように,整合性を保証できないためにデータ操作を制限された状態を検査保留状態といいます。参照表を検査保留状態にして,データ操作を制限するためには,pd_check_pendingオペランドにUSEを指定するか,又はオペランドの指定を省略する必要があります。検査保留状態の表は,整合性チェックユティリティ(pdconstck)を使用して検査保留状態を解除します。また,整合性チェックユティリティを使用して,強制的に検査保留状態にもできます。
pd_check_pendingオペランドにNOUSEを指定していると,表間で参照整合性を保証できない場合でもデータ操作を制限しません。そのため,整合性が保証できなくなるSQLやユティリティを実行した場合は,整合性チェックユティリティで強制的に検査保留状態に設定してから,整合性を確認してください。
整合性が保証できなくなる操作については「13.19.4 データ操作と整合性」を,整合性の確認手順は「13.19.5 表の整合性確認手順」を参照してください。
整合性チェックユティリティ以外に,次に示すユティリティ,コマンド,及びSQLで参照表を検査保留状態に設定するかどうかを決めたり,又は検査保留状態を解除したりできます。
それぞれの詳細について,ユティリティ及びコマンドはマニュアル「HiRDB Version 8 コマンドリファレンス」を,SQLはマニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。
検査保留状態はディクショナリ表と,表が格納されたRDエリアの表情報で管理しています。ディクショナリ表では表単位,及び制約単位に検査保留状態を管理し,表情報では分割表の場合はRDエリア単位に,分割表ではない場合は表単位に検査保留状態を管理します。
検査保留状態の情報が格納されている場所と内容を次の表に示します。
表13-15 検査保留状態の情報が格納されている場所と内容(参照制約)
格納場所 | 格納されている情報 | ||
---|---|---|---|
ディクショナリ表 | SQL_TABLES表 | CHECK_PEND列 | 表単位の参照制約の検査保留状態 |
SQL_REFERENTIAL_COSNSTRAINTS表 | CHECK_PEND列 | 制約単位の参照制約の検査保留状態 | |
RDエリアの表情報 | 分割していない表の場合 | 表単位の参照制約又は検査制約の検査保留状態 | |
分割表の場合 | RDエリア単位の参照制約又は検査制約の検査保留状態 |
検査保留状態の表に対してできなくなる操作を次の表に示します。なお,トリガ動作によって操作対象表にアクセスする場合,トリガSQL文に指定したSQLの操作可否に依存します。また,操作対象表がビュー表の場合,ビュー表の基になる実表の操作可否に依存します。
表13-16 検査保留状態の表に対する操作可否
検査保留状態の表に対する操作 | 操作可否 | ||
---|---|---|---|
操作系SQL | SELECT文 | 対象表の検索 | △※1 |
対象表から作成したリストの検索 | |||
INSERT文 | 対象表への挿入 | ||
UPDATE文 | 対象表の更新 | ||
DELETE文 | 対象表からの行削除 | ||
ASSIGN LIST文 | 対象表からのリスト作成 | ||
ユティリティ | リバランスユティリティ(pdrbal) | × | |
データベース再編成ユティリティ(pdrorg) | 再編成 | △※2 |
次のような参照関係がある表を例に説明します。この場合,検査保留状態になるのは表T2と表T3だけです。
表T2と表T3が検査保留状態の場合,各表に対して制限される操作について次に示します。
表T2だけが検査保留状態の場合,各表に対して制限される操作を次の表に示します。
表13-17 表T2だけが検査保留状態の場合,各表に対して制限される操作
操作対象表 | 制限される操作 | 制限の内容 |
---|---|---|
表T1 | UPDATE(対象表の更新) | 表T2に定義されている参照制約動作指定によって異なります。
|
DELETE(対象表からの行削除) | ||
表T2 | SELECT文(対象表の検索及び対象表から作成したリストの検索) | 次の条件をどちらも満たす場合だけ,操作できます。それ以外は操作できません。
|
INSERT文(対象表への挿入) | ||
UPDATE文(対象表の更新) | ||
DELETE文(対象表からの行削除) | ||
ASSIGN LIST文(対象表からのリスト作成) | ||
リバランスユティリティ(pdrbal) | 操作できません。 | |
データベース再編成ユティリティ(pdrorg)による再編成 | フレキシブルハッシュ分割の分割表に対して再編成を実行する場合,操作できないときがあります。詳細は,マニュアル「HiRDB Version 8 コマンドリファレンス」の「データベース再編成ユティリティ(pdrorg)」を参照してください。 | |
表T3 | 制限される操作はありません。INSERT及びDELETEの場合,被参照表T2を参照し,整合性チェックを行います。 |
表T3だけが検査保留状態の場合,各表に対して制限される操作を次の表に示します。
表13-18 表T3だけが検査保留状態の場合,各表に対して制限される操作
操作対象表 | 制限される操作 | 制限の内容 |
---|---|---|
表T1 | UPDATE(対象表の更新) | 表T2及び表T3に定義されている参照制約動作がCASCADEで,参照制約動作の操作対象となるRDエリアの表情報が検査保留状態のときは操作できません。ただし,同値更新のときは操作できます。 |
DELETE(対象表からの行削除) | ||
表T2 | UPDATE(対象表の更新) | 表T2及び表T3に定義されている参照制約動作指定によって異なります。
|
DELETE(対象表からの行削除) | ||
表T3 | SELECT文(対象表の検索及び対象表から作成したリストの検索) | 次の条件をどちらも満たす場合だけ,操作できます。それ以外は操作できません。
|
INSERT文(対象表への挿入) | ||
UPDATE文(対象表の更新) | ||
DELETE文(対象表からの行削除) | ||
ASSIGN LIST文(対象表からのリスト作成) | ||
リバランスユティリティ(pdrbal) | 操作できません。 | |
データベース再編成ユティリティ(pdrorg)による再編成 | フレキシブルハッシュ分割の分割表に対して再編成を実行する場合,操作できないときがあります。詳細は,マニュアル「HiRDB Version 8 コマンドリファレンス」の「データベース再編成ユティリティ(pdrorg)」を参照してください。 |
表T2及び表T3が検査保留状態の場合,各表に対して制限される操作を次の表に示します。
表13-19 表T2及び表T3が検査保留状態の場合,各表に対して制限される操作
操作対象表 | 制限される操作 | 制限の内容 |
---|---|---|
表T1 | UPDATE(対象表の更新) | 表T2及び表T3に定義されている参照制約動作がCASCADEで,参照制約動作の操作対象となるRDエリアの表情報が検査保留状態のときは操作できません。ただし,同値更新のときは操作できます。 表T2及び表T3に定義されている参照制約動作指定がRESTRICTの場合,操作できます。参照表T2を参照し,整合性チェックを行います。 |
DELETE(対象表からの行削除) | ||
表T2 | SELECT文(対象表の検索及び対象表から作成したリストの検索) | 次の条件をどちらも満たす場合だけ,操作できます。それ以外は操作できません。
|
INSERT文(対象表への挿入) | ||
UPDATE文(対象表の更新) | ||
DELETE文(対象表からの行削除) | ||
ASSIGN LIST文(対象表からのリスト作成) | ||
リバランスユティリティ(pdrbal) | 操作できません。 | |
データベース再編成ユティリティ(pdrorg)による再編成 | フレキシブルハッシュ分割の分割表に対して再編成を実行する場合,操作できないときがあります。詳細は,マニュアル「HiRDB Version 8 コマンドリファレンス」の「データベース再編成ユティリティ(pdrorg)」を参照してください。 | |
表T3 | SELECT文(対象表の検索及び対象表から作成したリストの検索) | 次の条件をどちらも満たす場合だけ,操作できます。それ以外は操作できません。
|
INSERT文(対象表への挿入) | ||
UPDATE文(対象表の更新) | ||
DELETE文(対象表からの行削除) | ||
ASSIGN LIST文(対象表からのリスト作成) | ||
リバランスユティリティ(pdrbal) | 操作できません。 | |
データベース再編成ユティリティ(pdrorg)による再編成 | フレキシブルハッシュ分割の分割表に対して再編成を実行する場合,操作できないときがあります。詳細は,マニュアル「HiRDB Version 8 コマンドリファレンス」の「データベース再編成ユティリティ(pdrorg)」を参照してください。 |
RDエリア単位に検査保留状態を管理しているため,分割表やインナレプリカ機能を使用していて,実際に操作するRDエリアの表情報が検査保留状態の場合,その分割表や世代に対する操作は制限されることがあります。それぞれについて説明します。
分割表で,データを格納している一部のRDエリアが検査保留状態の場合の例を次の図に示します。
図13-35 分割表で,RDエリア単位に検査保留状態を管理する場合のデータ操作可否
インナレプリカ機能を使用していて,ある世代の一部のRDエリアが検査保留状態の場合の例を次の図に示します。
図13-36 インナレプリカ機能を使用していて,RDエリア単位に検査保留状態を管理する場合のデータ操作可否
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.