Amazon Performance Insightsをとりあえず触ってみる
これは PostgreSQL Advent Calendar 2017 の Day4 の記事です。 昨日はsnagaさんの「Dockerを使ってデータ分析用にPostgreSQLを使ってみる」でした。
さて私からは、先般正式リリースされたAmazon Aurora with PostgreSQL Compatibilityで使用出来るモニタリングツール、Aurora Performance insightを使ってみましたという(だけの)記事になります。 Aurora Performance Insight自体はまだPreview版(2017/12/04現在)という扱いなので、データは最長一日間しか保存されず対象エンジンはPostgreSQLのみで、使用出来るリージョンも限られています。
利用方法は簡単でAurora Postgresqlインスタンス作成時にパフォーマンスインサイトを有効化するチェックボックスがあるので有効を選択するだけです。追加料金もかかりませんが、GAになったらどうなるのかな?
インスタンスが立ち上がったらおもむろにEC2インスタンスからPgbenchを投げてみます。
-- psql pgbench インストール $ sudo yum install postgresql96 $ sudo yum install postgresql96-contrib -- pgbench初期化 $ pgbench -i -s 1000 -U awsuser -h xxxxxx.xxxxxx.us-east-1.rds.amazonaws.com -d sampledb -- pgbench実行 $ pgbench -r -c 100 -j 10 -t 1000 -U awsuser -h xxxxxx.xxxxxx.us-east-1.rds.amazonaws.com -d sampledb
で、RDSコンソールからまず待機(イベント)・SQL・Hostname・Userの中から表示したいものを選択し、右側のスライス基準という所でさらに切り口を指定すると欲しいグラフが表示されます。
SQL毎の待機イベント種別を表示 待機イベント毎の実行User ロック解除待ちのクエリも確認できます。
AWSコンソールからしかアクセス出来ず機能も簡素なものですが、正式リリース版では収集データ保持期間の長期化やAPIの提供も予定されているようなので今後に期待です。ここからは私の妄想ですが、さらにSQLチューニングアドバイザ的なものがもし加わってきたら、この手の機能を追加オプションと位置づけているEnterprise系ソリューションにもAuroraが食い込んでくるのでは〜と考える私なのでした。
明日はtjtakahashiさんです。よろしくお願い致します。
参考資料
pgbench で RDS PostgreSQL のマスターに負荷をかけてリードレプリカのレプリケーションラグを計測する - ablog
old_hash_valueからSQL全文を出力
statspackのSQL統計ではOLD_HASH_VALUEしか表示されないので、そこからSQL全文を出力する。
statspackから
Elapsed Elap per CPU Old Time (s) Executions Exec (s) %Total Time (s) Physical Reads Hash Value ---------- ------------ ---------- ------ ---------- --------------- ---------- 57.13 4 14.28 3.4 57.10 2 123456789 Module: sample@sample-db01 (TNS V1-V3) SELECT * FROM hogehoge;
対象SQLのOld Hash Valueを指定
SYS@localhost>SELECT stxt.sql_text FROM (SELECT st.sql_text,st.piece FROM v$sqltext st, v$sql s WHERE st.sql_id = s.sql_id AND s.old_hash_value = '123456789' GROUP BY st.sql_text,st.piece) stxt ORDER BY stxt.piece;
結果
SQL_TEXT ---------------------------------------------------------------- SELECT * FROM hogehoge;