[pgsql-jp: 32042] Re: 重い処理とパフォーマンスのバランス

Yutaka tanida tanida @ sra.co.jp
2004年 1月 16日 (金) 17:10:24 JST


谷田です。

On Fri, 16 Jan 2004 16:21:00 +0900
"Mao Morimoto" <yneko2 @ yamamaya.com> wrote:

> 約10,000,000レコード、テーブルサイズ約2Gバイトのテーブルから、
> SELECT INTO で、レコードを条件で絞り込んで一時テーブルを作成する
> (条件に一致するレコードは約3,000,000レコード)という処理があるのですが、
> このSELECT INTOを実行し始めると、処理が完了するまで約20分間、
> 他のSQLが異常に重くなってしまうのです。

これはPostgreSQLのバッファキャッシュアルゴリズムがまずいために、大きなシー
ケンシャルスキャンががパフォーマンス悪化を引き起こす既知の問題です。同様
の問題はpg_dump, vacuumなどでも起こります。残念なことに、今のところは有
効な解決策はありません。

この問題の対策に、バッファ周りに新しいアルゴリズムを7.5で採用することが
ほぼ確定しています。現在のsnapshotを取ってくれば、改善していることが確認
できると思います。当然開発版なので、おすすめはしません。

ちなみに、かつて私が書いた(けど採用されなかった)patchで、これをある程
度軽減できます。7.4.xにも当たりますが、十分テストされているとは言い難い
ので、これもおすすめはしません。

http://archives.postgresql.org/pgsql-hackers/2003-06/msg00806.php

# 自分で書いたときには、キャッシュヒット率が上がるけどパフォーマンスが
# 良くならず、これはダメだなと思っていたのですが、大分後でその効能に
# 気づきました。

-- 
Yutaka tanida <tanida @ sra.co.jp>




pgsql-jp メーリングリストの案内