From 013ebc0a7b7ea9c1b1ab7a3d4dd75ea121ea8ba7 Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Wed, 9 Sep 2015 18:43:37 +0300 Subject: 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 with minor editorialization by me --- src/backend/access/gist/gistscan.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/backend/access/gist/gistscan.c') 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; /* -- cgit v1.2.3