On 27.04.2011 09:51, Alexander Korotkov wrote:
On Tue, Apr 26, 2011 at 1:10 PM, Alexander Korotkov<aekorot...@gmail.com>wrote:

Since algorithm is focused to reduce I/O, we should expect best
acceleration in the case when index doesn't fitting to memory. Size of
buffers is comparable to size of whole index. It means that if we can hold
buffers in memory then we mostly can hold whole index in memory. That's why
I think we should have simple on-disk buffers management for first
representative benchmark.

Since we need to free all buffers after index built, I believe that buffers
should be stored separately. If not, index become bloat immediatly after
creation. We probably need to create a temporary relation to store buffers
in it. If my thought is right, then is there any example of using temporary
relation?

A temporary relation is a bit heavy-weight for this, a temporary file should be enough. See src/backend/storage/file/buffile.c, BufFileCreateTemp() function in particular. Or perhaps a tuplestore suits better, see src/backend/utils/sort/tuplestore.c, that's simpler to use if you're storing tuples. tuplestore only supports storing heap tuples at the moment, but it could easily be extended to store index tuples, like tuplesort.c does.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to