2013年2月16日に開催された「PostgreSQLアンカンファレンス」でのセッション「“今そこにある危機”を捉える ~ pg_stat_statements revisited」で使ったスライドを公開しました。
SQLのパフォーマンス分析、チューニングに今や不可欠なpg_stat_statementsビューの使い方を簡単に解説した資料です。
当日、セッションに参加している方に聞いてみたら、「pg_stat_statementsを知らなかった」とか「知っていたけど使ったことがなかった」という方も多くいましたので、改めてぜひ見てみていただければと思います。
資料の中で便利スクリプトも紹介していますので、そちらも併せてどうぞ。
※関連エントリ
実行が遅いSQL文をpg_stat_statementsで抽出する
2013年2月19日
2012年12月3日
実行が遅いSQL文をpg_stat_statementsで抽出する
Tweet |
PostgreSQL Advent Calendar 2012(全部俺)のDay 3です。
3日目となる今回はSQL文の実行状況を解析するツールとしてpg_stat_statementsを使ってみます。
特定のSQL文が遅いことが判明している場合は別ですが、通常、SQLのパフォーマンス分析を行う場合には、「どのSQL文が問題なのか」というところから調査します。その時の判断の軸としては、主に以下の2つがあります。
・実行回数の多いSQL文
・実行時間の長いSQL文
特定のSQL文を修正して得られるパフォーマンス向上の成果は、
・1つのSQL文の改善量×実行回数
となります。
例えば、1回実行するのに1秒かかるSQL文を1万回実行すると、トータルで1万秒となりますが、一回あたりの実行時間を0.5秒に短縮できればトータルの実行時間としては1万秒から5000秒に短縮されることになります。
このようにして、「クエリ1回の実行時間×クエリの実行回数」の大きいものから改善してくと、SQLチューニングに投入する費用対効果(時間も含む)が高くなります。
3日目となる今回はSQL文の実行状況を解析するツールとしてpg_stat_statementsを使ってみます。
■SQLパフォーマンスをどのように分析するか
特定のSQL文が遅いことが判明している場合は別ですが、通常、SQLのパフォーマンス分析を行う場合には、「どのSQL文が問題なのか」というところから調査します。その時の判断の軸としては、主に以下の2つがあります。
・実行回数の多いSQL文
・実行時間の長いSQL文
特定のSQL文を修正して得られるパフォーマンス向上の成果は、
・1つのSQL文の改善量×実行回数
となります。
例えば、1回実行するのに1秒かかるSQL文を1万回実行すると、トータルで1万秒となりますが、一回あたりの実行時間を0.5秒に短縮できればトータルの実行時間としては1万秒から5000秒に短縮されることになります。
このようにして、「クエリ1回の実行時間×クエリの実行回数」の大きいものから改善してくと、SQLチューニングに投入する費用対効果(時間も含む)が高くなります。
2012年12月2日
contribモジュールを使ってみよう
Tweet |
PostgreSQL Advent Calendar 2012(全部俺)のDay 2です。
今日はcontribモジュールの使い方についてです。
PostgreSQLには「contrib」と呼ばれるモジュールがあります。
これは、PostgreSQLのソースコードと一緒に配布されているものの、明示的にコンパイルしてインストールしないとデフォルトではインストールされないという、PostgreSQL周辺の拡張モジュールや便利ツールです。
以下のような感じで、ソースディレクトリの中のcontribというディレクトリ内にいろいろと並んでいます。
今日はcontribモジュールの使い方についてです。
■contribモジュールとは
PostgreSQLには「contrib」と呼ばれるモジュールがあります。
これは、PostgreSQLのソースコードと一緒に配布されているものの、明示的にコンパイルしてインストールしないとデフォルトではインストールされないという、PostgreSQL周辺の拡張モジュールや便利ツールです。
以下のような感じで、ソースディレクトリの中のcontribというディレクトリ内にいろいろと並んでいます。
[snaga@devsv02 postgresql-9.0.8]$ ls aclocal.m4 config.status* contrib/ GNUmakefile INSTALL src/ config/ configure* COPYRIGHT GNUmakefile.in Makefile config.log configure.in doc/ HISTORY README [snaga@devsv02 postgresql-9.0.8]$ cd contrib/ [snaga@devsv02 contrib]$ ls adminpack/ fuzzystrmatch/ pgbench/ seg/ auto_explain/ hstore/ pg_buffercache/ spi/ btree_gin/ intagg/ pgcrypto/ sslinfo/ btree_gist/ intarray/ pg_freespacemap/ start-scripts/ chkpass/ isn/ pgrowlocks/ tablefunc/ citext/ lo/ pg_standby/ test_parser/ contrib-global.mk ltree/ pg_stat_statements/ tsearch2/ cube/ Makefile pgstattuple/ unaccent/ dblink/ oid2name/ pg_trgm/ uuid-ossp/ dict_int/ pageinspect/ pg_upgrade/ vacuumlo/ dict_xsyn/ passwordcheck/ pg_upgrade_support/ xml2/ earthdistance/ pg_archivecleanup/ README [snaga@devsv02 contrib]$この一覧はオフィシャルマニュアルでは「付録 F. 追加で提供されるモジュール」に記載されています。 このcontribのモジュールを使いこなせるかどうかで、PostgreSQLの便利度は大きく変わってきますので、今回はこのcontribモジュールの使い方を解説します。
登録:
投稿 (Atom)