diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2015-09-09 18:43:37 +0300 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2015-09-09 18:43:37 +0300 |
commit | 013ebc0a7b7ea9c1b1ab7a3d4dd75ea121ea8ba7 (patch) | |
tree | f22d59c51b1df33681b4dcc9e7160b6e6c0fa446 /src/backend/access/gist/gistscan.c | |
parent | 96f6a0cb41ee06673960019f0026b1b0fd1e644d (diff) | |
download | postgresql-013ebc0a7b7ea9c1b1ab7a3d4dd75ea121ea8ba7.tar.gz postgresql-013ebc0a7b7ea9c1b1ab7a3d4dd75ea121ea8ba7.zip |
Microvacuum for GIST
Mark index tuple as dead if it's pointed by kill_prior_tuple during
ordinary (search) scan and remove it during insert process if there is no
enough space for new tuple to insert. This improves select performance
because index will not return tuple marked as dead and improves insert
performance because it reduces number of page split.
Anastasia Lubennikova <a.lubennikova@postgrespro.ru> with
minor editorialization by me
Diffstat (limited to 'src/backend/access/gist/gistscan.c')
-rw-r--r-- | src/backend/access/gist/gistscan.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index ad392948756..a17c5bc5646 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -93,6 +93,11 @@ gistbeginscan(PG_FUNCTION_ARGS) memset(scan->xs_orderbynulls, true, sizeof(bool) * scan->numberOfOrderBys); } + so->killedItems = NULL; /* until needed */ + so->numKilled = 0; + so->curBlkno = InvalidBlockNumber; + so->curPageLSN = InvalidXLogRecPtr; + scan->opaque = so; /* |