« ヒアドキュメントとunexpected end of file | トップページ | PostgreSQLでの日付データ文字列変換 »

2014.05.11

PostgreSQL:work memoryの動的設定

PostgreSQLのパラメータの中にwork_memという項目がある。
デフォルトは1MB。
こいつを活用してPostgreSQLのパフォーマンス改善ができるかもしれない、というお話。

ただこの値が小さいとソート処理がもたつく可能性がある。

一時ディスクファイルに書き込む前に、内部並べ替えとハッシュテーブル操作が使用するメモリ容量
だからである。

1つの操作ごとにこの作業メモリは確保されるので、MaxConnections(+α) x work_mem だけのメモリーを使用する、ということを考えると気軽にこの値を増やせないのは事実であるし、すごい軽い処理であっても大量のメモリを使うというのはどう考えても非効率である。

それを解決するのは、今日も登場SETである。

SET work_mem to '64MB';
とりあえず、でかいソートが発生することがわかっている処理の前に、一時的にwork_memを拡張してやればよい、ということである。
これなら必要な量を自分で制御できるのでリソースの有効利用と性能要求の双方を満たせる良い対応方法だろう。

というわけで"work_memはdefault設定にしておいて動的に確保しよう"という標語にしておこう。
もちろん、常に巨大ソートが発生することがわかっているシステムなら、デフォルトのほうを変えておくべきであるが。

|

« ヒアドキュメントとunexpected end of file | トップページ | PostgreSQLでの日付データ文字列変換 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/59608084

この記事へのトラックバック一覧です: PostgreSQL:work memoryの動的設定:

« ヒアドキュメントとunexpected end of file | トップページ | PostgreSQLでの日付データ文字列変換 »