Your SlideShare is downloading. ×
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

「今そこにある危機」を捉える ~ pg_stat_statements revisited

4,385
views

Published on

2013年2月16日に開催された「PostgreSQLアンカンファレンス」でのセッション「“今そこにある危機”を捉える ~ pg_stat_statements revisited」の講演資料です。 …

2013年2月16日に開催された「PostgreSQLアンカンファレンス」でのセッション「“今そこにある危機”を捉える ~ pg_stat_statements revisited」の講演資料です。

PostgreSQLアンカンファレンス@東京(2/16)
http://atnd.org/events/35310

Published in: Technology

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,385
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
43
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 「今そこにある危機」を捉える “pg_stat_statements revisited” アップタイム・テクノロジーズ 永安 悟史 Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 1
  • 2. アジェンダ• 「pg_stat_statements」とは• 機能と仕様(8.4~9.2)• Normalize(正規化)とは• どのような時に使えるのか• どのような時に「使えない」のか• 「今そこにある危機」を捉える Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 2
  • 3. 「pg_stat_statements」とは• PostgreSQL 8.4で導入されたビュー – より正確には、ビューを実現する拡張モジュール – インストール、設定が必要• ユーザ、データベース、クエリの種類別に集計される – 何回実行されたか – どれだけ時間がかかったか – 何レコード取り出したか – 何ブロック読んだか、書いたか – 等々・・・ http://www.postgresql.jp/document/9.2/html/pgstatstatements.html Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 3
  • 4. 「pg_stat_statements」とは Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 4
  • 5. 機能と仕様• PostgreSQL用の共有ライブラリとして提供 – サーバ起動前にpostgresql.confで設定する必要がある – shared_preload_librariesパラメータ• クエリ種別、実行回数、総実行時間等を収集 – クエリの中の「値」が異なると、異なるクエリとして集計(9.1まで) – 9.2以降は、Normalize(正規化)により値の異なるクエリも集約• 集計値を保持するpg_stat_statementsビューを提供 – ビューを作成するSQL文を実行する必要がある(スーパーユーザ) – 9.1以降であれば CREATE EXTENSION … を実行• 集計値のリセットは専用のSQL関数を使う – SELECT pg_stat_statements_reset() http://www.postgresql.jp/document/9.2/html/pgstatstatements.html Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 5
  • 6. 機能と仕様 cont’d 8.4 9.2 9.0 9.2 9.2 http://www.postgresql.jp/document/9.2/html/pgstatstatements.htmlCopyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 6
  • 7. Normalize(正規化)とは Normalizeなし(9.1) Normalizeあり(9.2)Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 7
  • 8. どのような時に使えるのか• どのクエリがたくさん実行されているのかを知りたい• どのクエリの実行に時間がかかっているのかを知りたい• どのクエリがリソースを食っているのかを知りたい• サーバログにSQLを大量に出力されても困る Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 8
  • 9. どのような時に「使えない」のか• モジュールをロードしていない – shared_preload_librariesの設定をしていない• バージョンが9.1までで、かつ、プリペアードクエリを使ってい ない – バインド変数を使っていると、同じクエリとして集計される Normalizeなし(9.1)、プリペアードクエリ使用 Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 9
  • 10. 「今そこにある危機」を捉える• 今現在、目の前のPostgreSQLサーバの負荷が高い、重い。• 何が問題なのかを知りたい。SQLに問題があるなら、その SQLを抽出したい。• サーバに負荷を掛けたくない、設定をいじりたくない。• 累積値ではなく、今の値が知りたい。統計情報は無闇にリ セットしたくない。• 他にもやらなければならないことはたくさんある。手間をかけ たくない。 Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 10
  • 11. 「今そこにある危機」を捉える cont’d• 今から10秒間の間に実行されたSQL文を抽出する• 抽出された各SQL文の実行回数と総実行時間を把握する – 総実行時間 = 平均実行時間 × 実行回数• 各SQL文ごとのアクセス状況を把握する – block hit(バッファ読み込み)、block read(ブロック読み込み)等• その後、ヘビーなSQL文をなんとかする – ブロックI/Oが多い? バッファヒットが多くてCPU使ってる? Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 11
  • 12. デモ• snap_rank_statement_by_totaltime.sql Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 12
  • 13. snap_rank_statement_by_totaltime.sql• やってくれること – 10秒間に実行されたSQL文を抽出 – 総実行時間でランキングを作成、上位20件を表示• 内部でやっていること – pg_stat_statementsビューのスナップショットを作成 – 10秒待つ – 再度、pg_stat_statementsビューのスナップショットを作成 – スナップショット間の差分を計算してランキング• 入手先 – http://www.uptime.jp/go/pgperf Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 13
  • 14. Q&ACopyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 14
  • 15. 【お問い合わせ先】アップタイム・テクノロジーズ合同会社担当:永安E-mail: snaga@uptime.jpWeb: http://www.uptime.jp/ Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 15