mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Port single-page btree vacuum logic to hash indexes.
This is advantageous for hash indexes for the same reasons it's good for btrees: it accelerates space recycling, reducing bloat. Ashutosh Sharma, reviewed by Amit Kapila and by me. A bit of additional hacking by me. Discussion: http://postgr.es/m/CAE9k0PkRSyzx8dOnokEpUi2A-RFZK72WN0h9DEMv_ut9q6bPRw@mail.gmail.com
This commit is contained in:
@@ -44,6 +44,7 @@
|
||||
#define XLOG_HASH_UPDATE_META_PAGE 0xB0 /* update meta page after
|
||||
* vacuum */
|
||||
|
||||
#define XLOG_HASH_VACUUM_ONE_PAGE 0xC0 /* remove dead tuples from index page */
|
||||
|
||||
/*
|
||||
* xl_hash_split_allocate_page flag values, 8 bits are available.
|
||||
@@ -250,6 +251,24 @@ typedef struct xl_hash_init_bitmap_page
|
||||
#define SizeOfHashInitBitmapPage \
|
||||
(offsetof(xl_hash_init_bitmap_page, bmsize) + sizeof(uint16))
|
||||
|
||||
/*
|
||||
* This is what we need for index tuple deletion and to
|
||||
* update the meta page.
|
||||
*
|
||||
* This data record is used for XLOG_HASH_VACUUM_ONE_PAGE
|
||||
*
|
||||
* Backup Blk 0: bucket page
|
||||
* Backup Blk 1: meta page
|
||||
*/
|
||||
typedef struct xl_hash_vacuum_one_page
|
||||
{
|
||||
RelFileNode hnode;
|
||||
double ntuples;
|
||||
} xl_hash_vacuum_one_page;
|
||||
|
||||
#define SizeOfHashVacuumOnePage \
|
||||
(offsetof(xl_hash_vacuum_one_page, ntuples) + sizeof(double))
|
||||
|
||||
extern void hash_redo(XLogReaderState *record);
|
||||
extern void hash_desc(StringInfo buf, XLogReaderState *record);
|
||||
extern const char *hash_identify(uint8 info);
|
||||
|
Reference in New Issue
Block a user