Aurora PostgreSQL で pg_stat_statements ビューを参照できるようにする手順。
設定手順
- RDS でパラメータグループを作成
- パラメータグループファミリー: aurora-postgresql11
- タイプ: DB Parameter Group
- 作成したパラメータグループで以下の通り設定
パラメータ | 説明 | |
---|---|---|
pg_stat_statements.max | 10000 | pg_stat_statements.maxは、このモジュールによって記録されるSQL文の最大数(すなわち、pg_stat_statementsビューにおける行の最大数)です。これを超えて異なるSQL文を検出した場合は、最も実行回数の低いSQL文の情報が捨てられます。 デフォルトは5000です。 このパラメータはサーバの起動時にのみ指定できます。 |
pg_stat_statements.save | 1 | pg_stat_statements.saveは、サーバを終了させる際に文の統計情報を保存するかどうかを指定します。 offの場合、統計情報は終了時に保存されず、サーバ開始時に再読み込みもされません。 デフォルト値はonです。 このパラメータはpostgresql.confファイル、またはサーバコマンドラインでのみ設定できます。 |
pg_stat_statements.track | TOP | pg_stat_statements.trackは、どのSQL文をモジュールによって計測するかを制御します。 topを指定した場合は(直接クライアントによって発行された)最上層のSQL文を記録します。 allは(関数の中から呼び出された文などの)入れ子になった文も記録します。 noneは文に関する統計情報収集を無効にします。 デフォルトはtopです。 この設定はスーパーユーザだけが変更できます。 |
pg_stat_statements.track_utility | 設定せず | pg_stat_statements.track_utilityは、このモジュールがユーティリティコマンドを記録するかどうかを指定します。 ユーティリティコマンドとは、 SELECT、INSERT、UPDATEおよびDELETE以外のすべてです。 デフォルトはonです。 この設定はスーパーユーザのみが変更できます。 |
- 作成した DB パラメータグループを Aurora のインスタンスに設定
- pg_stat_statements をインストール
# installed_version が空なので有効化されていない testdb=> select * from pg_available_extensions where name = 'pg_stat_statements'; name | default_version | installed_version | comment --------------------+-----------------+-------------------+----------------------------------------------------------- pg_stat_statements | 1.6 | | track execution statistics of all SQL statements executed (1 行) # インストールする testdb=> CREATE EXTENSION pg_stat_statements; CREATE EXTENSION # installed_version にバージョンが表示される(インストールされている) testdb=> select * from pg_available_extensions where name = 'pg_stat_statements'; name | default_version | installed_version | comment --------------------+-----------------+-------------------+----------------------------------------------------------- pg_stat_statements | 1.6 | 1.6
使ってみる
- pg_stat_statements に問合せが可能になっている。
testdb=> select substr(query, 0, 60) as query,calls,total_time FROM pg_stat_statements testdb-> ORDER BY total_time DESC LIMIT 10; query | calls | total_time -------------------------------------------------------------+---------+------------------ UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE | 911811 | 563141.325559004 select sum(numbackends) numbackends, sum(xact_commit) xact_ | 38337 | 371650.687600002 select sum(blks_read), sum(blks_hit) from pg_stat_database | 38336 | 353140.195751002 SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 5154690 | 341899.975895946 WITH upsert AS (UPDATE public.rds_heartbeat2 SET value=$1 W | 3430600 | 172379.863405007 UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE t | 911817 | 121658.844748003 SELECT coalesce(sum(used_bytes),$1) FROM aurora_stat_file() | 76674 | 113082.077462 select count(distinct transactionid::varchar) active_transa | 38337 | 60694.9610260003 select count(distinct pid) blocked_transactions from pg_loc | 38337 | 59171.8662820004 select queryid, calls, total_time, rows, shared_blks_hit, s | 17156 | 54421.0345979998 (10 行)
環境
- Aurora PostgreSQL 11.7