8.1.2 表の再編成
- 〈この項の構成〉
(1) 表の再編成とは
データの追加や削除を繰り返すと,表中の行の配置が乱れて,データのアクセス効率や格納効率が低下します。このような場合,表中のデータをいったんファイルに退避した後,そのファイルのデータを再度表に格納することで,データのアクセス効率,及び格納効率を改善できます。これを表の再編成といいます。
表の再編成は,表単位,又はRDエリア単位(横分割表の場合)に実行できます。
表の再編成の概要を次の図に示します。
-
アンロードデータファイル
アンロードデータファイルとは,表データをいったん退避しておくファイルのことです。
-
制御情報ファイル
制御情報ファイルには,pdrorgの制御文を記述します。
制御文には,アンロードデータファイルの指定,インデクス情報の指定,及びLOB列の情報の指定などを記述します。
(2) LOB列がある表の場合の再編成
LOB列がある表の場合,LOB列構成基表とLOB列を同時に再編成できます。また,別々に再編成することもできます。
LOB列構成基表とは,LOB列がある表のLOB列を除いた部分のことをいいます。また,LOB列とは,データ型がBLOBの列のことをいいます。
同時に再編成する場合は,-jオプションを指定すると,性能が良くなります。-jオプションを指定しない再編成は,LOB列構成基表又はLOB列のどちらかを再編成する場合に採用してください。
プラグインが提供する抽象データ型がユーザLOB用RDエリアに格納されている場合,抽象データ型はLOB列構成基表と同時に再編成するか,又は再編成対象外にできます。
LOB列がある表の再編成を次の図に示します。
- [説明]
-
LOB列構成基表(列A,列B)のデータは,アンロードデータファイルへ退避します。
LOB列(列C)のデータは,LOBデータのアンロードファイルへ退避します。
-gオプション,及び-jオプションを指定すると,LOB列構成基表,及びLOB列のデータをまとめてアンロードデータファイルへ退避することもできます。
(3) 文字集合を定義した表の再編成
表の再編成をする場合にpdrorgが出力するアンロードデータファイルは一時ファイルのため,文字集合の列のデータに対して文字コード変換をしないでアンロードします。リロード時も文字コード変換をしないでデータベースに格納します。ただし,UOCを利用する場合は,文字集合が定義された列データに対して文字コード変換をしてアンロードデータファイルに出力します。
(4) 圧縮表の再編成
圧縮表を再編成する場合,圧縮列のデータは圧縮されたままアンロードし,そのままリロードします。ただし,UOCを利用する場合は,UOCで列データを参照するため,アンロード時に圧縮列の圧縮データを伸張し,リロード時に圧縮してから格納します。
(5) 予備列が定義されたFIX属性の表の再編成
予備列が定義されたFIX属性の表も再編成できます。
(6) 同期点指定の再編成
通常,表の再編成をするときは,すべてのデータをリロードした後にトランザクションを決着します。ユティリティが途中で異常終了した場合は,最初の時点までロールバックしてしまいます。このため,再実行時は最初からし直すことになります。
同期点指定の再編成の場合,任意のデータ件数単位にトランザクションを決着できます。これによって,ユティリティが異常終了した場合のロールバック時間や再実行時間を短縮できます。
なお,アンロード処理,インデクスの一括作成,及びLOB列への再編成処理の場合は,同期点指定の再編成は適用されません。この場合は,すべての処理が完了してからトランザクションが決着します。
同期点指定の再編成をする場合,option文(jobオペランド)を指定します。同期点指定の再編成の概要を次の図に示します。
- [説明]
-
最初の実行では,障害発生後にロールバックします。200万件の時点でトランザクションが決着しているため,ロールバックするのは200万件の時点までです。
再実行では,既存の表データの削除処理,及び200万件までのデータ格納処理をスキップし,それ以降のデータ格納処理をします。
(7) UOCを利用した再編成
ユーザが作成したプログラム(UOC)を利用して再編成ができます。
UOCを利用した再編成の場合,データベースから検索したデータを直接アンロードデータファイルへ出力するのではなく,データをUOCに渡して編集して出力できます。
例えば,大量のデータを削除する場合など,データベースから検索したデータをUOCでチェックしてアンロードデータファイルに出力するかどうかの判定をして,その結果生成されたアンロードデータファイルからリロードすると,空きページが点在しない(使用中空きページがない)再編成直後の形でデータ削除ができます。また,UOCを使用してアンロードすると,任意のフォーマットでのデータの出力もできます。