スケーラブルデータベースサーバ HiRDB Version 8 解説(UNIX(R)用)
HiRDB/パラレルサーバの場合,複数の表を結合するとき,それぞれの表が配置されたバックエンドサーバから表データを読み込み,別のバックエンドサーバで突き合わせ処理をします。そのため,複数のサーバを接続し,データを転送する処理が発生します。このとき,結合処理のための検索範囲のデータが一つのバックエンドサーバにあれば,そのデータを共用表として作成することで一つのバックエンドサーバで結合処理が完結します。共用表とは,共用RDエリアに格納された表で,すべてのバックエンドサーバから参照できる表のことです。また,共用表に定義するインデクスを,共用インデクスといいます。共用表については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
共用表及び共用インデクスはHiRDB/シングルサーバにも定義できます。これによって,HiRDB/パラレルサーバとSQL及びUAPの互換性を保てます。共用表及び共用インデクスはHiRDB/パラレルサーバで有効なので,通常はHiRDB/パラレルサーバで使用します。ここでは,HiRDB/パラレルサーバで共用表を使用する場合について説明します。HiRDB/シングルサーバで共用表を使用する場合については,「(6)HiRDB/シングルサーバで共用表を使用する場合の注意事項」を参照してください。
一つのバックエンドサーバで結合処理が完結するため,バックエンドサーバ間の接続やデータ転送によるオーバヘッドが削減できます。また,トランザクションごとに使用するバックエンドサーバ数を少なくできるため,多重実行時などに並列処理の効率が上がります。
更新処理が少なく,結合処理など複数のトランザクションから参照されるような表は,共用表として作成することをお勧めします。
共用表を更新する場合,共用RDエリアを配置している全バックエンドサーバに排他が掛かります。インデクスキー値を変更しないUPDATE文,PURGE TABLE文の実行以外はLOCK TABLE文でIN EXCLUSIVE MODEを指定し,全バックエンドサーバに排他を掛けなければ実行できません。そのため,排他が掛かっているRDエリアにアクセスする業務があるとデッドロック,又はサーバ間のグローバルデッドロックが発生する可能性があります。
なお,ローカルバッファを使用して共用表を更新する場合は,LOCK文を発行して更新してください。LOCK文を発行しない更新をしていて,サーバプロセスが異常終了すると,アボートコードPhb3008が出力されます(ユニットが異常終了することがあります)。
定義系SQLのCREATE TABLEでSHAREを指定(CREATE SHARE FIX TABLEと指定)します。なお,共用表は次の条件を満たす必要があります。
共用表を使用する場合の制限事項を次に示します。
HiRDB/パラレルサーバの場合との相違の詳細は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.