X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by postgresql.org (Postfix) with ESMTP id B5DC29DC9B3 for ; Wed, 18 Jan 2006 10:31:19 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 55637-03 for ; Wed, 18 Jan 2006 10:31:20 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey- Received: from mail.envyfinancial.com (unknown [206.248.142.186]) by postgresql.org (Postfix) with ESMTP id 199FA9DC9AC for ; Wed, 18 Jan 2006 10:31:13 -0400 (AST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.envyfinancial.com (Postfix) with ESMTP id 36B5F1CE2E; Wed, 18 Jan 2006 09:30:25 -0500 (EST) Received: from mail.envyfinancial.com ([127.0.0.1]) by localhost (mark.mielke.cc [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08242-05; Wed, 18 Jan 2006 09:30:25 -0500 (EST) Received: by mail.envyfinancial.com (Postfix, from userid 500) id 1C7B41CE30; Wed, 18 Jan 2006 09:30:25 -0500 (EST) Date: Wed, 18 Jan 2006 09:30:25 -0500 From: mark@mark.mielke.cc To: Alessandro Baretta Cc: Tom Lane , pgsql-performance@postgresql.org Subject: Re: Suspending SELECTs Message-ID: <20060118143024.GA8402@mark.mielke.cc> References: <43CB71AC.20203@barettadeit.com> <9766.1137433907@sss.pgh.pa.us> <43CD4BD0.9090807@barettadeit.com> <20060117211259.GA13926@mark.mielke.cc> <43CE030E.1070707@barettadeit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <43CE030E.1070707@barettadeit.com> User-Agent: Mutt/1.4.2.1i X-Virus-Scanned: amavisd-new at mail.envyfinancial.com X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, score=0.646 required=5 tests=[AWL=0.096, NO_REAL_NAME=0.55] X-Spam-Score: 0.646 X-Spam-Level: X-Archive-Number: 200601/293 X-Sequence-Number: 16771 On Wed, Jan 18, 2006 at 09:57:50AM +0100, Alessandro Baretta wrote: > mark@mark.mielke.cc wrote: > >On Tue, Jan 17, 2006 at 08:56:00PM +0100, Alessandro Baretta wrote: > >>I understand most of these issues, and expected this kind of reply. > >>Please, allow me to insist that we reason on this problem and try to find > >>a solution. My reason for doing so is that the future software industry > >>is likely to see more and more web applications retrieving data from > >>virtually endless databases, and in such contexts, it is sensible to ask > >>the final client--the web client--to store the "cursor state", because > >>web interaction is intrinsically asynchronous, and you cannot count on > >>users logging out when they're done, releasing resources allocated to > >>them. Think of Google. > >What is wrong with LIMIT and OFFSET? I assume your results are ordered > >in some manner. > It looks like this is the only possible solution at present--and in the > future, too--but it has a tremendouse performance impact on queries > returning thousands of rows. In the case of one web user generating one query, I don't see how it would have a tremendous performance impact on large queries. You mentioned google. I don't know how you use google - but most of the people I know, rarely ever search through the pages. Generally the answer we want is on the first page. If the ratio of users who search through multiple pages of results, and users who always stop on the first page, is anything significant (better than 2:1?) LIMIT and OFFSET are the desired approach. Why have complicated magic in an application, for a subset of the users? I there is to be a change to PostgreSQL to optimize for this case, I suggest it involve the caching of query plans, executor plans, query results (materialized views?), LIMIT and OFFSET. If we had all of this, you would have exactly what you want, while benefitting many more people than just you. No ugly 'persistent state cursors' or 'import/export cursor state' implementation. People would automatically benefit, without changing their applications. Cheers, mark -- mark@mielke.cc / markm@ncf.ca / markm@nortel.com __________________________ . . _ ._ . . .__ . . ._. .__ . . . .__ | Neighbourhood Coder |\/| |_| |_| |/ |_ |\/| | |_ | |/ |_ | | | | | | \ | \ |__ . | | .|. |__ |__ | \ |__ | Ottawa, Ontario, Canada One ring to rule them all, one ring to find them, one ring to bring them all and in the darkness bind them... http://mark.mielke.cc/