|From:||Robert Haas <robertmhaas(at)gmail(dot)com>|
|Views:||Raw Message | Whole Thread | Download mbox|
It's been bugging me for a while now that we don't have a prewarming
utility, for a couple of reasons, including:
1. Our customers look at me funny when I suggest that they use
pg_relation_filepath() and /bin/dd for this purpose.
2. Sometimes when I'm benchmarking stuff, I want to get all the data
cached in shared_buffers. This is surprisingly hard to do if the size
of any relation involved is >=1/4 of shared buffers, because the
BAS_BULKREAD stuff kicks in. You can do it by repeatedly seq-scanning
the relation - eventually all the blocks trickle in - but it takes a
long time, and that's annoying.
So I wrote a prewarming utility. Patch is attached. You can prewarm
either the OS cache or PostgreSQL's cache, and there are two options
for prewarming the OS cache to meet different needs. By passing the
correct arguments to the function, you can prewarm an entire relation
or just the blocks you choose; prewarming of blocks from alternate
relation forks is also supported, for completeness.
Hope you like it.
The Enterprise PostgreSQL Company
|Next Message||Jaime Casanova||2012-03-09 04:51:04||Re: pg_prewarm|
|Previous Message||Robert Haas||2012-03-09 03:46:10||Re: RFC: Making TRUNCATE more "MVCC-safe"|