11.1.11 シングルチャンク表を再編成する方法
シングルチャンク表を再編成する方法を説明します。
- 重要
-
再編成中の表に対して,更新系SQLまたは表を更新するコマンド(adbimportコマンドやadbmergechunkコマンドなど)を実行しないでください。実行した場合,SQL文やコマンドで更新した内容が,再編成後に失われるおそれがあります。
- 〈この項の構成〉
(1) 再編成の手順
シングルチャンク表の再編成手順を次に示します。
手順
-
APやコマンドが再編成対象の表にアクセスできない状態にする
次の操作を実行して,APやコマンドが再編成対象の表にアクセスできない状態にしてください。
-
adbchgsrvmodeコマンドに--offlineオプションを指定して,HADBサーバの稼働モードをオフラインモードに変更してください。さらに,HADBサーバマシン上で動作している,表を更新するコマンドやジョブ(定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど)を停止してください。
-
HADBサーバにアクセスするAPやコマンドをすべて停止してください。
上記の操作を両方とも実行することを推奨します。
-
-
表のデータをエクスポートする
adbexportコマンドの-nオプションに再編成対象の表を指定して,表のデータをエクスポートしてください。
adbexportコマンドについては,マニュアルHADB コマンドリファレンスのadbexport(データのエクスポート)を参照してください。
-
エクスポートしたデータを作成モードでインポートする
adbimportコマンドに-dオプションを指定して,手順2.でエクスポートしたデータをインポートしてください。-dオプションを指定すると,作成モードでインポートされます(表の既存データをすべて削除してから,手順2.でエクスポートしたデータがインポートされます)。
adbimportコマンドについては,マニュアルHADB コマンドリファレンスのadbimport(データのインポート)を参照してください。
- 重要
-
adbimportコマンドを実行する際,インポートオプションadb_import_rthd_numには,「(2) インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると,データの格納効率が悪くなるおそれがあります。
-
APやコマンドが再編成対象の表にアクセスできる状態にする
次に示す方法で,APやコマンドが再編成対象の表にアクセスできる状態にしてください。
-
手順1.で,HADBサーバの稼働モードをオフラインモードに変更した場合
adbchgsrvmodeコマンドに--normalオプションを指定して,HADBサーバの稼働モードを通常モードに変更してください。また,HADBサーバマシン上で動作しているコマンドやジョブを停止した場合は,停止していたコマンドやジョブを開始してください。
-
手順1.で,HADBサーバにアクセスするAPやコマンドを停止した場合
停止していたAPやコマンドを開始してください。
-
- メモ
-
マルチチャンク表を再編成する方法については,次の個所を参照してください。
(2) インポートオプションの見積もり
- ■シングルチャンク表がローストア表の場合
-
adbimportコマンドを実行する際,インポートオプションadb_import_rthd_numには,次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると,データの格納効率が悪くなるおそれがあります。
計算式
インポートオプションadb_import_rthd_numの指定値 ≦ ↑ 再編成対象のセグメント数 × データの格納効率 ↑+1
- 再編成対象のセグメント数
-
表の使用中セグメント数を代入してください。
表の使用中セグメント数を代入するためには,adbdbstatusコマンドで表のサマリ情報を出力してください。そして,Used_segments(表の使用中セグメント数)の出力内容を確認してください。
adbdbstatusコマンドについては,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)を参照してください。
- データの格納効率
-
「11.1.10 シングルチャンク表の再編成が必要かどうかを確認する方法」の「(2) シングルチャンク表がローストア表の場合」で求めた値を代入してください。
- ■シングルチャンク表がカラムストア表の場合
-
adbimportコマンドを実行する際,インポートオプションadb_import_rthd_numには,次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると,データの格納効率が悪くなるおそれがあります。
計算式
インポートオプションadb_import_rthd_numの指定値 ≦ ↑ 再編成対象のセグメント数 × 再編成対象の行数 ÷ カラムデータ用セグメントに格納されている行数 ↑+1
- 再編成対象のセグメント数
-
表の使用中のカラムデータ用セグメント数を代入してください。
表の使用中のカラムデータ用セグメント数を確認するには,-d usedオプションを指定したadbdbstatusコマンドで,DBエリア,表とインデクスの使用量情報を出力してください。そして,Segment_type(セグメントの種類)がColumn_data(カラムデータ用セグメント)の行のUsed_segments(使用中セグメント数)の出力内容を確認してください。
- 再編成対象の行数
-
再編成対象の表の行数を代入してください。次のSELECT文を実行すると,表の行数がわかります。
SELECT COUNT(*) FROM "表名"
- カラムデータ用セグメントに格納されている行数
-
再編成対象の表にadbimportコマンドでインポートした行数,または更新行のカラム化機能によってローストア形式からカラムストア形式に変換された行数を代入してください。
adbdbstatusコマンドを実行して,再編成要否の情報を取得してください。Column_data_numの値が,カラムデータ用セグメントに格納されている行数です。