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

YOSHIDA Toshikazu yoshida.toshikazu @ nttcom.co.jp
2010年 12月 24日 (金) 10:47:07 JST


吉田と申します。

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


私も笠原さんと同じように、キャッシュの影響を
受けずに正確な時間測定をしたい場合は、
下記方法しかないのかな、と思います。


1.PostgreSQL停止
2.# echo 3 > /proc/sys/vm/drop_caches
3.PostgreSQL起動
4.クエリ実行



On Wed, 22 Dec 2010 17:28:06 +0900
Tatsuhito Kasahara <kasahara.tatsuhito @ oss.ntt.co.jp> wrote:

|笠原と申します。
|
|toshihideka4316 @ zenrin.co.jp 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 などの情報を元に、間接的に推測する方法が考えられますが・・
|面倒ですし、高い精度を求めるのはとても難しいです。
|
|手軽にできる速度計測の方法は思いつきませんでした。
|
|参考になれば幸いです。



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