Topオブジェクト
ホーム画面 > プロジェクト選択 > 分析 > Topオブジェクト
個別インスタンスのオブジェクト(テーブル、インデックス)別のBloatingサイズ、Scan数、DML実行数、Dead tupleが多いオブジェクトを提供します。また、使用の多いオブジェクトを把握し、VacuumやAnalyzeを適切な時期に実行できるように情報を提供します。
-
画面で照会したい 日付と インスタンス、照会基準、照会件数を設定した上でボタンを選択します。 選択した条件に応じた結果がテーブルに表示されます。
-
照会リストでtablenameまたはindexnameカラム項目を選択すると column、index構成が確認できるObject detailウィンドウが表示されます。
ノートObject detail機能は、DBXエージェントの1.6.15バージョン以降に対応します。 データベース権限に関する設定は、次の文書を参考にしてください。
-
Topオブジェクトについての情報は1日に1回収集します。 関連するエージェント設定の詳細については、次の文書を参照してください。
-
データ照会のためには、DBモニタリングアカウントに次の権限が必要です。
grant select on all tables in schema {schema_name} to whatap;
-
この機能は、DBXエージェント1.6.13バージョン以降に対応しています。
Bloating
Bloatingは実際に使用されていないtupleが増加してオブジェクトサイズが大きくなる現象です。
エージェント設定(whatap.conf)のtable[index]_bloat_ratio[bytes]
に設定された収集基準よりも大きな値を持つテーブルとインデックスをリストに表示します。 該当するオブジェクトがないと、データが照会されない場合があります。
チューニングTips
Bloat_ratio
が高いテーブルはVacuumの実行を検討してください。 詳細については、次の文書を参照してください。
次はBloatingを照会すると表示されるカラム項目です。
区分 | カラム名 | 説明 |
---|---|---|
Table | datname | データベース名 |
schemaname | スキーマ(schema)名 | |
tablename | テーブル名 | |
est_rows | Dead tuple + Live tuple件数で予測した値 | |
table_size | テーブルサイズ | |
bloat_size | Dead tupleで膨らませた予想テーブルサイズ | |
bloat_ratio | 膨らませたサイズの比率です。 | |
Index | datname | データベース名 |
schemaname | スキーマ(schema)名 | |
tablename | テーブル名 | |
indexname | インデックス名 | |
table_size | テーブルサイズ | |
index_size | インデックスサイズ | |
bloat_size | Dead tupleによって膨らませた予想インデックスサイズ | |
bloat_ratio | 膨らませたサイズ比率 | |
index_scans | インデックスを使用した場合、index scan回収 |
Scan
Seq_scan
はインデックスを使用していないFull Scanを意味し、idx_scan
はインデックスを使用した数を意味します。
チューニングTips
Seq_scan
が高いテーブルはインデックス作成を、idx_scan
が低いインデックスは削除を検討してください。 詳細については、次の文書を参照してください。
次はScanを照会すると表示されるカラム項目です。
区分 | カラム名 | 説明 |
---|---|---|
Table | datname | データベース名 |
schemaname | スキーマ(schema)名 | |
tablename | テーブル名 | |
seq_scan | 該当テーブルを順次スキャン(Full scan)した数 | |
seq_tup_read | 順次スキャンから読取りされたライブ行数 | |
idx_scan | 該当テーブルのインデックススキャン数 | |
idx_tup_fetch | インデックススキャンで読み取ったライブ行数 | |
Index | datname | データベース名 |
schemaname | スキーマ(schema)名 | |
tablename | テーブル名 | |
indexname | インデックス名 | |
idx_scan | インデックススキャン実行数 | |
idx_tup_fetch | 該当インデックスを使用してインデックススキャンから抽出された有効テーブル行数 | |
idx_tup_read | インデックススキャンに返されたインデックス項目の数 |
DML
dml_count
値が高いテーブルは、使用の多い主要なテーブルです。
チューニングTips
使用するシステムの主要なテーブルを把握し、テーブルの変更やアーキテクチャ設計の際に参考にしてください。
次はDMLを照会すると表示されるカラム項目です。
カラム名 | 説明 |
---|---|
datname | データベース名 |
schemaname | スキーマ(schema)名 |
tablename | テーブル名 |
dml_count | n_tup_ins + n_tup_upd + n_tup_del |
n_tup_ins | 挿入(Insert)された行数 |
n_tup_upd | アップデート(Update)された行数 |
n_tup_del | 削除(Delete)された行数 |
n_tup_hot_upd | HOTアップデートされた行数(例:別途のインデックスアップデートが不要) |
Analyze Time
AnalyzeとVacuum実行の日付が古いオブジェクトの一覧です。
チューニングTips
日付の古いテーブルは、統計情報が正しくないことがあります。 実行を検討してください。 詳細については、次の文書を参照してください。
次はAnalyze Timeを照会すると表示されるカラム項目です。
カラム名 | 説明 |
---|---|
datname | データベース名 |
schemaname | スキーマ(schema)名 |
tablename | テーブル名 |
last_analyze | テーブルを手動分析した最後の時間 |
last_autoanalyze | autovacuumデーモンでテーブルを分析した最後の時間 |
last_autovacuum | autovacuumデーモンでテーブルをバキューム(vacuum)した最後の時間 |
analyze_count | 手動で分析した回数 |
last_vacuum | テーブルが手動でバキューム(vacuum)した最後の時間(VACUUM FULLは除く) |
autoanalyze_count | autovacuumデーモンで分析した回数 |
autovacuum_count | autovacuumデーモンでバキューム(vacuum)した回数 |
vacuum_count | 手動でバキューム(vacuum)した回数(VACUUM FULLを除く) |
n_mod_since_analyze | 最後の分析(analyze)から変更された行数(推定値) |
Age
PostgreSQLではXID(transaction id)を循環的に使用しているため、ある時点でXIDがラップアラウンド(Wraparound)されることがあります。 この現象を防止するために、xid_age
(Current XID - 作成時点のXID)が増え続けないように管理する必要があります。 autovacuum_freeze_max_age
を超えたらAnti-Wraparound Vacuumが自動的に行わるため、autovacuum_freeze_max_age
以下でxid_age
を管理します。
この一覧は、以下の基準に該当するvacuum対象があるか照会します。 対象がないと、データが照会されない場合があります。
-
dead tupleの数がvacuum threshold(
autovacuum_threshold
+autovacuum_scale_factor
*number-of-tuples
) より多いテーブル -
age(
relfrozenxid
)がautovacuum_freeze_max_age
より大きなテーブル
チューニングTips
xid_age
が増加し続けている場合は、現在設定されたAuto Vaccum条件としてXID整理作業が進まない可能性があります。 auto vacuumパラメータを調整するか、手動でVacuumの実行を検討してください。
詳細については、次の文書を参照してください。
次はAgeを照会すると表示されるカラム項目です。
カラム名 | 説明 |
---|---|
datname | データベース名 |
schemaname | スキーマ(schema)名 |
tablename | テーブル名 |
xid_age | テーブルのmax age、最も古いレコードのxid (トランザクションID) |
per_to_wraparound | xid (トランザクションID) ラッピングまでの残りの余裕をパーセンテージで表示した指標計算式: per_to_wraparound (%) = xid_age / Autovacuum_freeze_max_age * 100 |
table_size | テーブルサイズ |
autovacuum_vacuum_tuples | この値よりDead tupleの数が多くなると、autovacuumを実行します。 |
dead_tuples | Dead tuple数 |
autovacuum_freeze_max_age | 既定値は2億に設定 |
Dead Tuple
Dead tupleはDeleteやUpdateですでに削除された資料です。 free spaceに変えるためにVacuum実行を検討します。
チューニングTips
Dead tupleを減らすためにはVacuum実行を検討してください。 詳細については、次の文書を参照してください。
次はDead Tupleを照会すると表示されるカラム項目です。
カラム名 | 説明 |
---|---|
datname | データベース名 |
schemaname | スキーマ(schema)名 |
tablename | テーブル名 |
dead_tuple | DeleteやUpdate等により使用しないタプル(Tuple)の数 |
dead_tuple_ratio | 使用しないタプル(Tuple)の割合 |
live_tuple | 使用するタプル(Tuple)の数 |
live_tuple_ratio | 使用するタプル(Tuple)の割合 |
total_relation_size | リレーションの全体サイズ、インデックスとTOASTデータを含む |
total_tuple | 全体タプル(Tuple)の数 |
エージェント設定
次はTopオブジェクトに関する情報を照会するためのエージェント設定です。 whatap.confファイルに必要なオプションを設定してください。
-
pg_object Boolean
既定値
false
Topオブジェクト情報の収集有無を設定します。 情報を収集するには
true
に変更してください。 -
pg_object_hour Int
既定値
5
Topオブジェクト情報の収集時間を設定します。 既定値は
5
で、午前5時に収集を始めます。 -
table_bloat_ratio Percentage
既定値
50
テーブルbloating ratio値が設定値以上の場合は、情報を収集します。 既定値は50%です。
-
table_bloat_bytes Byte
既定値
10485760
テーブルbloatingbytes値が設定値以上の場合、情報を収集します。 既定値は10MBです。
-
index_bloat_ratio Percentage
既定値
50
インデックスbloatingratio値が設定値以上の場合、情報を収集します。 既定値は50%です。
-
index_bloat_bytes Byte
既定値
10485760
インデックスbloating bytes値が設定値以上の場合、情報を収集します。 既定値は10MBです。
-
autovacuum_list_limit Int
既定値
50
日付の古いage(
relfrozenxid
)順に設定値程のテーブル情報を収集します。 既定値は50件です。