2010年12月24日

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

吉田と申します。

|> ・または、キャッシュの影響を受けずに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@xxxxx> wrote:

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


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




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