2010年12月22日

[pgsql-jp: 40639] Re:PostgreSQLキャッシュクリア方法についてご質問

笠原と申します。

toshihideka4316@xxxxx wrote:
> SQLの速度計測を行うことが多々あるのですが、
> 2度目に実行した場合はキャッシュがきいているのか速度が速くなります。
> (例えば1度目で速度が数十秒であるSQLが2度目以降は1秒かからず返ってきます)
> (サーバ、クライアント共にPostgreSQL8.2.14、ODBCドライバver8.2.4です)
>

> そこで質問なのですが、
> ・キャッシュをクリアする方法は無いでしょうか。
> (サーバの再起動は厳しいです)
PostgreSQLの共有バッファは PostgreSQL の再起動でリセットできますが、
OS のファイルキャッシュが効くはずなので、ちょっと難しい話ですね・・
# OS のファイルキャッシュの振る舞いも Windows や Linux で違いますし。

Linux であれば、DB の乗っているデバイスを unmount/mount することで、
キャッシュをクリアできると思います。

他、Linux kernel 2.6.16 以降であれば
sync

echo 3 > /proc/sys/vm/drop_caches
でいけるようです。
# man proc あたりを参照しました。

> ・または、キャッシュの影響を受けずにSQLの速度計測を行う方法は無いでしょうか。
PostgreSQLの稼動統計情報 (pg_stat_user_tables や pg_statio_user_tables)や
EXPLAIN ANALYZE、iostat などの情報を元に、間接的に推測する方法が考えられますが・・
面倒ですし、高い精度を求めるのはとても難しいです。

手軽にできる速度計測の方法は思いつきませんでした。

参考になれば幸いです。
--
NTT OSSセンタ

笠原辰仁


投稿者 xml-rpc : 2010年12月22日 17:28
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/100898
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。