Received: from maia.hub.org (unknown [200.46.204.183]) by mail.postgresql.org (Postfix) with ESMTP id D7B62633CE2 for ; Fri, 19 Mar 2010 18:13:34 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 32757-07 for ; Fri, 19 Mar 2010 21:13:24 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from is.rice.edu (is.rice.edu [128.42.42.24]) by mail.postgresql.org (Postfix) with ESMTP id 75707633BC5 for ; Fri, 19 Mar 2010 18:13:24 -0300 (ADT) Received: from localhost (localhost [127.0.0.1]) by is.rice.edu (Postfix) with ESMTP id E228C4181C; Fri, 19 Mar 2010 16:16:44 -0500 (CDT) Received: from is.rice.edu ([127.0.0.1]) by localhost (it.is.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00866-07; Fri, 19 Mar 2010 16:16:39 -0500 (CDT) Received: by is.rice.edu (Postfix, from userid 18612) id BBC6D41819; Fri, 19 Mar 2010 16:16:38 -0500 (CDT) Date: Fri, 19 Mar 2010 16:16:38 -0500 From: Kenneth Marshall To: Yeb Havinga Cc: Matthew Wakeling , Bruce Momjian , pgsql-performance@postgresql.org Subject: Re: GiST index performance Message-ID: <20100319211638.GI1218@it.is.rice.edu> References: <201002252342.o1PNgtG07127@momjian.us> <4B9FAF4B.20907@gmail.com> <4BA0A036.1070508@gmail.com> <4BA3A6C6.80406@gmail.com> <4BA3DCA1.2010808@gmail.com> <4BA3E35A.1000905@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BA3E35A.1000905@gmail.com> User-Agent: Mutt/1.5.16 (2007-06-09) X-Virus-Scanned: by amavis-2.2.1 at is.rice.edu X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-2.599 tagged_above=-10 required=5 tests=BAYES_00=-2.599 X-Spam-Level: X-Archive-Number: 201003/250 X-Sequence-Number: 38075 Hi Yeb, I have not looked at the gist code, but would it be possible to make virtual pages that have a size that is 1/power-of-2 * blocksize. Then the leaf node could be 1/8 or even 1/16 the size of the full pagesize. Regards, Ken On Fri, Mar 19, 2010 at 09:49:30PM +0100, Yeb Havinga wrote: > Yeb Havinga wrote: >> >> Since the gistpagesize is derived from the database blocksize, it might be >> wise to set the blocksize low for this case, I'm going to play with this a >> bit more. > Ok, one last mail before it turns into spam: with a 1KB database blocksize, > the query now runs in 30 seconds (original 70 on my machine, shared buffers > 240MB). > The per inner loop access time now 24 microsecs compared to on my machine > original 74 microsecs with 8KB size and 8 for the btree scan. Not a bad > speedup with such a simple parameter :-) > > postgres=# EXPLAIN ANALYSE SELECT * FROM a, b WHERE a.a BETWEEN b.b AND b.b > + 2; > QUERY PLAN > > --------------------------------------------------------------------------------------------------------------------------- > Nested Loop (cost=0.00..4169159462.20 rows=111109777668 width=8) (actual > time=0.184..29540.355 rows=2999997 loops=1) > -> Seq Scan on b (cost=0.00..47037.62 rows=999962 width=4) (actual > time=0.024..1783.484 rows=1000000 loops=1) > -> Index Scan using a_a on a (cost=0.00..2224.78 rows=111114 width=4) > (actual time=0.021..0.024 rows=3 loops=1000000) > Index Cond: ((a.a >= b.b) AND (a.a <= (b.b + 2))) > Total runtime: 30483.303 ms > (5 rows) > > > postgres=# select gist_stat('a_a'); > gist_stat > ------------------------------------------- > Number of levels: 5 + > Number of pages: 47618 + > Number of leaf pages: 45454 + > Number of tuples: 1047617 + > Number of invalid tuples: 0 + > Number of leaf tuples: 1000000 + > Total size of tuples: 21523756 bytes+ > Total size of leaf tuples: 20545448 bytes+ > Total size of index: 48760832 bytes+ > (1 row) > > > -- > Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-performance >