Home > データベース

データベース Archive

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

PostgreSQL チューニング

こんにちは。mattyです。
distinct を使用して遅くなっている、我慢ならないSQLのチューニングのメモ書きです。
データベースはPostgreSQL(8.4.1)です。

PostgreSQL8.4の新機能 によると、 8.4からはDISTINCT も気軽に使っていける(group by に置き換えなくてもいい)そうなので、group by 置き換え以外のチューニング方法を調べてみたところ、postgresql.confの「work_mem」の値を変えるのが有効らしいと判りました。(work_memの詳細)


まず現在のwork_memの値を表示させてみると(psql起動)
show work_mem
の実行で「1MB」と表示されました。

この状態で
EXPLAIN SELECT ・・・
と問題のSQLのコストを計測したところ、処理に13秒かかっていました。。

そこで!postgresql.conf には反映されませんが
set work_mem = '32MB'
と一時的に設定を変えてみて同じくコスト計測したところ、、、なんと処理時間は半分になりました!
しかし半分にはなりましたが6秒もかかっているのでまだ我慢なりません。

上限があるらしく値を「32MB」以上に大きく取ってもそれ以上の効果がありませんでした。

この方法で我慢できる処理時間になればいいと思いましたが、、
SQLを再検討したほうが手っ取り早そうなので結局SQLを2分割して解決させました。
ただwork_memの設定は今回の問題解決には至りませんでしたが 好影響をもたらしたので本採用したいと思います。

Home > データベース

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。