Received: from maia.hub.org (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 948DB65AF87 for ; Tue, 16 Mar 2010 14:01:27 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 75804-01 for ; Tue, 16 Mar 2010 17:01:15 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-bw0-f221.google.com (mail-bw0-f221.google.com [209.85.218.221]) by mail.postgresql.org (Postfix) with ESMTP id 4DBD87978D8 for ; Tue, 16 Mar 2010 13:18:23 -0300 (ADT) Received: by bwz21 with SMTP id 21so125856bwz.35 for ; Tue, 16 Mar 2010 09:18:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=wyJVIsVXZHRQKW97bJy37uHLbJpLgceG89hWvEJFiHQ=; b=jRXodq53zQujG68+jzN5ej7RHEeDvHHomH1cGPNe844BvZG7fF7xxSdID/X0XB1OkI gJM69+4HifBE/PHjh14EsK5LFW61PphdOPggHDn7QNh311ELVTHs1/TXq7Rzng3U+/Dg sQ1Nk6lpuWWBrYPNYmPQVxWj6xQsU3n1Y+JOI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=h69inH5uEWudh6LK5KnGSn9h5PO8gtAIKSkNCRzZxeIgJrrk6ag3FamR2ACZUTXAiG jEMExu2KX7/rcGIHlRh03VRADn8cGSmyj7ffIKwvHOQUkJ7vnD/BcYjg93qoCqZMsMsW WA96CobkAnp0vyYSGMkIQUUzYqakFWMdVPbFs= Received: by 10.204.25.82 with SMTP id y18mr10155bkb.150.1268756301567; Tue, 16 Mar 2010 09:18:21 -0700 (PDT) Received: from [0.0.0.0] (5357DA75.cable.casema.nl [83.87.218.117]) by mx.google.com with ESMTPS id x16sm26609546bku.11.2010.03.16.09.18.20 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 16 Mar 2010 09:18:20 -0700 (PDT) Message-ID: <4B9FAF4B.20907@gmail.com> Date: Tue, 16 Mar 2010 17:18:19 +0100 From: Yeb Havinga User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Matthew Wakeling CC: Bruce Momjian , pgsql-performance@postgresql.org Subject: Re: GiST index performance References: <201002252342.o1PNgtG07127@momjian.us> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-2.349 tagged_above=-10 required=5 tests=AWL=0.250, BAYES_00=-2.599 X-Spam-Level: X-Archive-Number: 201003/171 X-Sequence-Number: 37996 Matthew Wakeling wrote: >> Matthew Wakeling wrote: >>> A second quite distinct issue is the general performance of GiST >>> indexes >>> which is also mentioned in the old thread linked from Open Items. For >>> that, we have a test case at >>> http://archives.postgresql.org/pgsql-performance/2009-04/msg00276.php >>> for >>> btree_gist indexes. I have a similar example with the bioseg GiST >>> index. I >>> have completely reimplemented the same algorithms in Java for algorithm >>> investigation and instrumentation purposes, and it runs about a hundred >>> times faster than in Postgres. I think this is a problem, and I'm >>> willing >>> to do some investigation to try and solve it. > I have not made any progress on this issue. I think Oleg and Teodor > would be better placed working it out. All I can say is that I > implemented the exact same indexing algorithm in Java, and it > performed 100 times faster than Postgres. Now, Postgres has to do a > lot of additional work, like mapping the index onto disc, locking > pages, and abstracting to plugin user functions, so I would expect > some difference - I'm not sure 100 times is reasonable though. I tried > to do some profiling, but couldn't see any one section of code that > was taking too much time. Not sure what I can further do. Hello Mathew and list, A lot of time spent in gistget.c code and a lot of functioncall5's to the gist's consistent function which is out of sight for gprof. Something different but related since also gist: we noticed before that gist indexes that use a compressed form for index entries suffer from repeated compress calls on query operands (see http://archives.postgresql.org/pgsql-hackers/2009-05/msg00078.php). The btree_gist int4 compress function calls the generic gbt_num_compress, which does a palloc. Maybe this palloc is allso hit al lot when scanning the index, because the constants that are queries with are repeatedly compressed and palloced. regards, Yeb Havinga