スケーラブルデータベースサーバ HiRDB Version 8 解説(UNIX(R)用)

[目次][用語][索引][前へ][次へ]

3.3.15 共用表

HiRDB/パラレルサーバの場合,複数の表を結合するとき,それぞれの表が配置されたバックエンドサーバから表データを読み込み,別のバックエンドサーバで突き合わせ処理をします。そのため,複数のサーバを接続し,データを転送する処理が発生します。このとき,結合処理のための検索範囲のデータが一つのバックエンドサーバにあれば,そのデータを共用表として作成することで一つのバックエンドサーバで結合処理が完結します。共用表とは,共用RDエリアに格納された表で,すべてのバックエンドサーバから参照できる表のことです。また,共用表に定義するインデクスを,共用インデクスといいます。共用表については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

共用表及び共用インデクスはHiRDB/シングルサーバにも定義できます。これによって,HiRDB/パラレルサーバとSQL及びUAPの互換性を保てます。共用表及び共用インデクスはHiRDB/パラレルサーバで有効なので,通常はHiRDB/パラレルサーバで使用します。ここでは,HiRDB/パラレルサーバで共用表を使用する場合について説明します。HiRDB/シングルサーバで共用表を使用する場合については,「(6)HiRDB/シングルサーバで共用表を使用する場合の注意事項」を参照してください。

<この項の構成>
(1) 共用表の効果
(2) 適用基準
(3) 共用表を更新する場合の注意
(4) 定義方法
(5) 制限事項
(6) HiRDB/シングルサーバで共用表を使用する場合の注意事項

(1) 共用表の効果

一つのバックエンドサーバで結合処理が完結するため,バックエンドサーバ間の接続やデータ転送によるオーバヘッドが削減できます。また,トランザクションごとに使用するバックエンドサーバ数を少なくできるため,多重実行時などに並列処理の効率が上がります。

(2) 適用基準

更新処理が少なく,結合処理など複数のトランザクションから参照されるような表は,共用表として作成することをお勧めします。

(3) 共用表を更新する場合の注意

共用表を更新する場合,共用RDエリアを配置している全バックエンドサーバに排他が掛かります。インデクスキー値を変更しないUPDATE文,PURGE TABLE文の実行以外はLOCK TABLE文でIN EXCLUSIVE MODEを指定し,全バックエンドサーバに排他を掛けなければ実行できません。そのため,排他が掛かっているRDエリアにアクセスする業務があるとデッドロック,又はサーバ間のグローバルデッドロックが発生する可能性があります。

なお,ローカルバッファを使用して共用表を更新する場合は,LOCK文を発行して更新してください。LOCK文を発行しない更新をしていて,サーバプロセスが異常終了すると,アボートコードPhb3008が出力されます(ユニットが異常終了することがあります)。

(4) 定義方法

定義系SQLのCREATE TABLESHAREを指定(CREATE SHARE FIX TABLEと指定)します。なお,共用表は次の条件を満たす必要があります。

(5) 制限事項

共用表を使用する場合の制限事項を次に示します。

(6) HiRDB/シングルサーバで共用表を使用する場合の注意事項

HiRDB/パラレルサーバの場合との相違の詳細は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。