Thread: pgsql: Concurrency for GiST - full concurrency for
pgsql: Concurrency for GiST - full concurrency for
From
teodor@svr1.postgresql.org (Teodor Sigaev)
Date:
Log Message: ----------- Concurrency for GiST - full concurrency for insert/update/select/vacuum: - select and vacuum never locks more than one page simultaneously - select (gettuple) hasn't any lock across it's calls - insert never locks more than two page simultaneously: - during search of leaf to insert it locks only one page simultaneously - while walk upward to the root it locked only parent (may be non-direct parent) and child. One of them X-lock, another may be S- or X-lock - 'vacuum full' locks index - improve gistgetmulti - simplify XLOG records Fix bug in index_beginscan_internal: LockRelation may clean rd_aminfo structure, so move GET_REL_PROCEDURE after LockRelation Modified Files: -------------- pgsql/src/backend/access/gist: gist.c (r1.121 -> r1.122) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gist.c.diff?r1=1.121&r2=1.122) gistget.c (r1.49 -> r1.50) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistget.c.diff?r1=1.49&r2=1.50) gistscan.c (r1.58 -> r1.59) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistscan.c.diff?r1=1.58&r2=1.59) gistutil.c (r1.2 -> r1.3) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistutil.c.diff?r1=1.2&r2=1.3) gistvacuum.c (r1.2 -> r1.3) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistvacuum.c.diff?r1=1.2&r2=1.3) gistxlog.c (r1.3 -> r1.4) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistxlog.c.diff?r1=1.3&r2=1.4) pgsql/src/backend/access/index: indexam.c (r1.83 -> r1.84) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/index/indexam.c.diff?r1=1.83&r2=1.84) pgsql/src/include/access: gist.h (r1.47 -> r1.48) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/gist.h.diff?r1=1.47&r2=1.48) gist_private.h (r1.5 -> r1.6) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/gist_private.h.diff?r1=1.5&r2=1.6) gistscan.h (r1.26 -> r1.27) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/gistscan.h.diff?r1=1.26&r2=1.27) pgsql/src/include/catalog: catversion.h (r1.281 -> r1.282) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.281&r2=1.282) pg_am.h (r1.36 -> r1.37) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_am.h.diff?r1=1.36&r2=1.37)