11.18.5 システム表の状態や使用量を確認する方法
システム表(実表)の状態,使用量および格納効率を確認する方法について説明します。
(1) システム表(実表)の状態や使用量を確認する
システム表(実表)の状態や使用量を確認する場合は,adbdbstatusコマンドで「表のサマリ情報」を出力してください。
adbdbstatusコマンドについては,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)を参照してください。
- 実行するコマンドの例
-
ここでは,システム表(実表)のSTATUS_CHUNKS表について,サマリ情報を出力します。
adbdbstatus -d summary -c table -n "HADB"."STATUS_CHUNKS" -S M --shared-lock
コマンドを実行すると,標準出力にシステム表HADB.STATUS_CHUNKSのサマリ情報が出力されます。adbdbstatusコマンドによる出力結果の確認項目を次に示します。
- 再編成前のデータが残っているかどうかを確認する場合
-
Pending_delete_chunksの出力内容を確認してください。Pending_delete_chunksに出力されている値が1の場合,再編成前のデータ(削除仕掛中のチャンク)が残っています。
adbreorgsystemdataコマンドを再実行すると,再編成前のデータを削除できます。
- システム表(実表)の使用量を確認する場合
-
MB_Used_pagesの出力内容を確認してください。システム表用DBエリア内に格納されているシステム表(実表)のデータが使用している領域を,メガバイト単位で確認できます。
なお,--shared-lockオプションを指定した場合は,MB_Used_pagesの出力内容に,削除仕掛中のチャンクが使用している領域は含まれません。MB_Used_pagesの出力内容に,削除仕掛中のチャンクが使用している領域を含めたい場合は,--shared-lockオプションを指定しないでください。
(2) システム表(実表)の格納効率を確認する
システム表(実表)の格納効率を確認する場合は,SQLトレース機能を使用する必要があります。
手順
-
SQLトレース情報が出力されるようにする
SQLトレース機能を使用して,次に示すSQLトレース情報が出力されるようにしてください。
-
アクセスパス情報
-
アクセスパスの統計情報
SQLトレース情報の出力については,「10.11.5 SQLトレース情報を出力するための準備」を参照してください。
- メモ
-
次に示すサーバ定義のオペランドにYを指定すれば,アクセスパス情報およびアクセスパスの統計情報が出力されます。
-
adb_sql_trc_outオペランド
-
adb_sql_trc_accesspathオペランド
サーバ定義のオペランドについては,「7.2.6 SQL文に関するオペランド(set形式)」を参照してください。
また,HADBサーバを開始している場合は,adbchgsqltrcコマンドを使用してください。adbchgsqltrcコマンドについては,マニュアルHADB コマンドリファレンスのadbchgsqltrc(SQLトレース情報の出力開始・停止)を参照してください。
-
-
-
SQL文でシステム表の行数を確認する
格納効率を確認するシステム表に対して,DBA権限を持つHADBユーザで,行数を出力するSQL文を実行してください。SQL文を実行して出力された行数が,システム表の行数となります。
各システム表に対応するSQL文を次に示します。
■STATUS_TABLES表の行数を出力するSQL文
SELECT COUNT(COLLECT_TIME) FROM MASTER.STATUS_TABLES
■STATUS_COLUMNS表の行数を出力するSQL文
SELECT COUNT(DATA_TYPE_CODE) FROM MASTER.STATUS_COLUMNS
■STATUS_INDEXES表の行数を出力するSQL文
SELECT COUNT(COLLECT_TIME) FROM MASTER.STATUS_INDEXES
■STATUS_CHUNKS表の行数を出力するSQL文
SELECT COUNT(NVL(CREATE_TIME,CURRENT_TIMESTAMP)) FROM MASTER.STATUS_CHUNKS
■STATUS_SYNONYM_DICTIONARIES表の行数を出力するSQL文
SELECT COUNT(CREATE_TIME) FROM MASTER.STATUS_SYNONYM_DICTIONARIES
-
無効な行データの行数を確認する
手順2.で実行したSQL文によって出力されたSQLトレース情報のアクセスパス情報から,システム表内の「無効な行データの行数」を確認してください。次の条件に該当するアクセスパス情報の「Data_deleted_rows_cnt」の値を確認してください。
-
スキーマ名が「HADB」である。
-
表名が「手順2.で実行したSQL文に該当するシステム表」である。
条件に該当する「Data_deleted_rows_cnt」の値が,対象のシステム表内にある無効な行データの行数となります。
-
-
システム表(実表)の格納効率を求める
手順2.と手順3.で求めた値を基に,対象のシステム表(実表)の格納効率を求めてください。計算式を次に示します。
計算式
計算式で求めた値が0に近い場合は,システム表(実表)の格納効率が悪いと判断できます。adbreorgsystemdataコマンドで,システム表を再編成してください。