3.4.1 排他制御の単位
- 〈この項の構成〉
(1) 排他資源とその包含関係
HiRDBでは,データベースの整合性を保つように排他制御をしています。特に,HiRDB/パラレルサーバでは,基本的に各サーバ間で資源の共有をしないので,サーバごとに閉じた排他制御をしています。
HiRDBでは,排他資源という単位で排他を掛けて,不正にデータが参照されたり,更新されたりすることを防止しています。
排他資源には包含関係があるため,上位の資源で排他を掛けると,それより下位の資源には排他を掛ける必要がありません。排他資源とその包含関係を次の図に示します。
- 注※1
-
インナレプリカ機能使用時の最上位排他資源は,インナレプリカ構成管理情報,又はレプリカグループ構成管理情報となります。
インナレプリカ構成管理情報の排他を取得できない場合に,レプリカグループ構成管理情報の排他を取得します。レプリカRDエリアを定義していないRDエリアにアクセスする場合でも,排他が掛かります。これによって,業務実行中に通常RDエリアにレプリカRDエリアが定義されたり,インナレプリカグループ内の構成が変わったりすることを抑止します。
- 注※2
-
一時表の実体化時に,一時的に取得します。一時表に対する操作で取得される排他については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
- 注※3
-
インデクスキー値無排他を適用した場合,キー値には排他を掛けません。
- 注※4
-
プラグインが使用するファイルです。
(2) 最小排他資源単位の設定
HiRDBシステムが自動的にする排他制御では,表ごとに最小排他資源単位を設定できます。設定できる排他資源は,行,又はページです。
また,インデクスに対してインデクスキー値で排他制御しないようにすることもできます。これをインデクスキー値無排他といいます。
(a) 最小排他資源単位を行にした場合
ページ単位の排他と比較して排他資源の単位が小さいため,同時実行性が向上する反面,排他制御による処理時間やメモリ使用量が増加します。
最小排他資源単位を行にするには,CREATE TABLE,ALTER TABLE,又はLOCK文を使用します。詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。
(b) 最小排他資源単位をページにした場合
行単位の排他と比較して排他制御による処理時間やメモリ使用量が減少する反面,同時実行性が低下します。
最小排他資源単位をページにするには,CREATE TABLE,ALTER TABLE,又はLOCK文を使用します。詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。
(c) インデクスキー値無排他の場合
インデクスキー値には排他を掛けないで,表に対してだけ排他を掛けます。これによって,次のような問題を回避できます。
-
データ更新とインデクス検索との間のデッドロック
-
同一キーを持つデータに対するアクセスが必要もなく待たされる
-
異なるキーを持つデータに対するアクセスが必要もなく待たされる
インデクスキー値無排他については,「インデクスキー値無排他」を参照してください。
(a)〜(c)はそれぞれ特徴が異なりますので,特徴を考慮した上で設定してください。