[PHP-users 20633]Re: pg_free_result呼び出しタイミングについて

Kenji Ono ono @ fjct.fujitsu.com
2004年 3月 3日 (水) 10:17:25 JST


大垣さん、今日は。小野です。

大変、勉強になりました。
このシステムはアンケートの集計機能の中の話しなのですが、クロスチ
ェックをかけなければならない関係上、PG_QUERYを2重ループでまわし
てます。
1重目が500回を超えるあたりから、ガクンと速度が低下します。
そこで、1重目のループ結果は全てArrey配列に貯めて、PG_RESULT_FREE
した後に、Arrey分のループの中で、PG_QUERYをまわすようにしました。
しかしながら、たいしたレスポンスの改善にはつながりませんでした。

レスポンスの改善の話しになると別ツリーのほうが良いと思うので省き
ますが、なかなかどこがボトルネックになっているのかを探すのはひと
苦労です。
クラスタなどは良く聞く話しなのですが、見てみるふりをしてきました。(^^;;
なんだか難しくて・・。

もっと、精進致します。


> Connectionもresultもですが、PHPでは不必要なリソース(変数全般)の開放
> は普通はパフォーマンス上不利です。ですから通常は不精をして開放はし
> ません。
> 
> 先に書きましたがDBに問い合わせした結果はメモリリミットによって制限
> されません。どんなに大きな問い合わせ結果でも実行してしまうので注意
> が必要です。
> :SNIP
> 負荷を掛けてPostgreSQLが暴走する事はほとんど無いと思います。暴走す
> るのでは無く、過負荷状態になってレスポンスが非常に悪くなる、状態は
> 発生します。この場合pg_free_resultを使っても状態は改善しないはずで
> す。システム全体のクエリ方法の改善、DBのクラスタ化などが必要と思い
> ます。


PHP-users メーリングリストの案内