mirror of
https://github.com/postgres/postgres.git
synced 2025-07-12 21:01:52 +03:00
pg_prewarm: Add automatic prewarm feature.
Periodically while the server is running, and at shutdown, write out a list of blocks in shared buffers. When the server reaches consistency -- unfortunatey, we can't do it before that point without breaking things -- reload those blocks into any still-unused shared buffers. Mithun Cy and Robert Haas, reviewed and tested by Beena Emerson, Amit Kapila, Jim Nasby, and Rafia Sabih. Discussion: http://postgr.es/m/CAD__OugubOs1Vy7kgF6xTjmEqTR4CrGAv8w+ZbaY_+MZeitukw@mail.gmail.com
This commit is contained in:
@ -168,6 +168,23 @@ ClockSweepTick(void)
|
||||
return victim;
|
||||
}
|
||||
|
||||
/*
|
||||
* have_free_buffer -- a lockless check to see if there is a free buffer in
|
||||
* buffer pool.
|
||||
*
|
||||
* If the result is true that will become stale once free buffers are moved out
|
||||
* by other operations, so the caller who strictly want to use a free buffer
|
||||
* should not call this.
|
||||
*/
|
||||
bool
|
||||
have_free_buffer()
|
||||
{
|
||||
if (StrategyControl->firstFreeBuffer >= 0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* StrategyGetBuffer
|
||||
*
|
||||
|
@ -317,6 +317,7 @@ extern void StrategyNotifyBgWriter(int bgwprocno);
|
||||
|
||||
extern Size StrategyShmemSize(void);
|
||||
extern void StrategyInitialize(bool init);
|
||||
extern bool have_free_buffer(void);
|
||||
|
||||
/* buf_table.c */
|
||||
extern Size BufTableShmemSize(int size);
|
||||
|
@ -138,6 +138,7 @@ AttrDefault
|
||||
AttrNumber
|
||||
AttributeOpts
|
||||
AuthRequest
|
||||
AutoPrewarmSharedState
|
||||
AutoVacOpts
|
||||
AutoVacuumShmemStruct
|
||||
AutoVacuumWorkItem
|
||||
@ -218,6 +219,7 @@ BlobInfo
|
||||
Block
|
||||
BlockId
|
||||
BlockIdData
|
||||
BlockInfoRecord
|
||||
BlockNumber
|
||||
BlockSampler
|
||||
BlockSamplerData
|
||||
|
Reference in New Issue
Block a user