スケーラブルデータベースサーバ HiRDB Version 8 バッチ高速化機能
![[目次]](FIGURE/CONTENT.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
この例題での条件を次に示します。
- 二つのバッチ業務を連続して実行します。
- バッチ業務でアクセスするRDエリアは,RDDATA01(表格納RDエリア)およびRDIDX01(インデクス格納RDエリア)です。
- ログレスモードでバッチ業務を実行します。
運用の流れを次の図に示します。
図3-2 バッチ業務に適用する場合の運用の流れ
![[図データ]](FIGURE/ZU030020.GIF)
- 参考
- 初期データロードにもインメモリデータ処理を適用できます。その際,長時間シンクポイントを取得できなくなるのを防ぐため,同期点指定のデータロードの適用を検討してください。同期点指定のデータロードについては,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。
- 初期データロードにインメモリデータ処理を適用する場合の手順は,バッチ業務に適用する場合の手順と同じです。(2)(b)および(d)のバッチ業務をpdloadコマンドによる初期データロードに置き換えてお読みください。
- なお,初期データロードの場合,(2)(a)のバックアップの取得は必要ありません。
(2) コマンド実行手順
コマンドの実行手順を次に示します。
(a) RDエリアをインメモリ化する
- RDDATA01およびRDIDX01を閉塞クローズ状態にします。
pdhold -r RDDATA01,RDIDX01 -c
|
- システムログファイルをスワップします。
- RDDATA01およびRDIDX01をインメモリ化します。
pdmemdb -k stay -r RDDATA01,RDIDX01
|
このとき,インメモリデータバッファとRDエリアは,DB同期状態になります。
![[図データ]](FIGURE/ZU030031.GIF)
なお,ここでは,複数のRDエリアをまとめてインメモリ化しています。この場合の注意事項については,「3.5 複数のRDエリアを一度にインメモリ化する場合の注意事項」を参照してください。
- RDDATA01およびRDIDX01の閉塞クローズを解除します。
pdrels -r RDDATA01,RDIDX01 -o
|
- RDDATA01およびRDIDX01のバックアップを取得します。
pdcopy -m C:\rdarea\mast\mast01 -M r
-r RDDATA01,RDIDX01
-b C:\pdcopy\backup01 -p C:\pdcopy\list01
|
バックアップの取得方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
- ポイント
- ここでは,RDエリアの閉塞クローズを解除してから参照可能モード(-M r)でバックアップを取得しています。通常と異なり,参照可能モードでバックアップを取得している間も更新ができます。このため,バックアップの取得中にバッチ業務を実行できます。インメモリRDエリアのバックアップ取得の仕組みについては,「4.1 バックアップを取得するときに気をつけること」を参照してください。
- 注意
- インメモリ化するときのRDエリアの閉塞は,pdhold -cコマンドで行ってください。pdhold -cコマンドで閉塞クローズ状態にすることによって,ほかのトランザクションが対象RDエリアにアクセスできないようにします。
(b) 一つ目のバッチ業務を実行する
- バッチ業務を実行します。
インメモリデータバッファの内容が更新され,DB非同期状態になります。
![[図データ]](FIGURE/ZU030032.GIF)
(c) インメモリデータバッファとRDエリアの同期を取る
- インメモリデータバッファとRDエリアの同期を取ります。
pdhold -r RDDATA01,RDIDX01 -b
|
一つ目のバッチ業務が終わったら,インメモリデータバッファのデータをRDエリアに書き込み,インメモリデータバッファとRDエリアの同期を取ります。これによって,DB同期状態になります。
pdhold -bコマンドを実行すると,インメモリデータバッファのデータをRDエリアに書き込みます。
![[図データ]](FIGURE/ZU030033.GIF)
- システムログファイルをスワップします。
- RDDATA01およびRDIDX01の閉塞を解除します。
pdrels -r RDDATA01,RDIDX01
|
- RDDATA01およびRDIDX01のバックアップを取得します。
pdcopy -m C:\rdarea\mast\mast01 -M r
-r RDDATA01,RDIDX01
-b C:\pdcopy\backup02 -p C:\pdcopy\list02
|
- ポイント
- ログレスモードで業務を実行しているため,一つ目のバッチ業務が終わったら,必ずインメモリデータバッファとRDエリアの同期を取ります。ここで同期を取らないと,二つ目のバッチ業務を実行中にバッファ障害が発生した場合,一つ目のバッチ業務から再実行しなくてはなりません。
(d) 二つ目のバッチ業務を実行する
- バッチ業務を実行します。
インメモリデータバッファの内容が更新され,DB非同期状態になります。
![[図データ]](FIGURE/ZU030034.GIF)
(e) インメモリデータバッファとRDエリアの同期を取る
- インメモリデータバッファとRDエリアの同期を取ります。
pdhold -r RDDATA01,RDIDX01 -c
|
二つ目のバッチ業務が終わったら,インメモリデータバッファのデータをRDエリアに書き込み,インメモリデータバッファとRDエリアの同期を取ります。これによって,DB同期状態になります。
pdhold -cコマンドを実行すると,インメモリデータバッファのデータをRDエリアに書き込みます。
![[図データ]](FIGURE/ZU030035.GIF)
- 注意
- ここで,pdhold -cコマンドを使用しているのは,(f)でインメモリ化を解除するためです。インメモリ化を解除するときのRDエリアの閉塞は,pdhold -cコマンドで行います。pdhold -cコマンドで閉塞クローズ状態にすることによって,ほかのトランザクションが対象RDエリアにアクセスできないようにします。
(f) インメモリ化を解除する
- RDDATA01およびRDIDX01のインメモリ化を解除します。
pdmemdb -k rels -r RDDATA01,RDIDX01
|
インメモリデータバッファがなくなります。これ以降は,グローバルバッファを使用します。
![[図データ]](FIGURE/ZU030036.GIF)
- システムログファイルをスワップします。
- RDDATA01およびRDIDX01のバックアップを取得します。
pdcopy -m C:\rdarea\mast\mast01 -M r
-r RDDATA01,RDIDX01
-b C:\pdcopy\backup03 -p C:\pdcopy\list03
|
ここでは前の手順と異なり,RDエリアの閉塞クローズを解除する前にバックアップを取得してください。バックアップを取得する前にRDエリアの閉塞クローズを解除すると,ほかのUAPからの更新が発生する場合があります。更新が発生したあとでRDエリアに障害が発生した場合,ログレスモードでバッチ業務を実行しているため,その更新内容を回復することができません。
- RDDATA01およびRDIDX01の閉塞を解除します。
pdrels -r RDDATA01,RDIDX01 -o
|
All Rights Reserved. Copyright (C) 2008, 2009, Hitachi, Ltd.