aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-04-18 04:13:00 +0000
committerBruce Momjian <bruce@momjian.us>2002-04-18 04:13:00 +0000
commit69cd5efb23cc7c2dd179cf84be9cfda8ffb6945f (patch)
tree8e31e1b33336f295a19493a0fd967f40911e4b74
parentb09f67bca1dd6869897d9db8ca325594abef5355 (diff)
downloadpostgresql-69cd5efb23cc7c2dd179cf84be9cfda8ffb6945f.tar.gz
postgresql-69cd5efb23cc7c2dd179cf84be9cfda8ffb6945f.zip
Add to PREPARE archive.
-rw-r--r--doc/TODO.detail/prepare1250
1 files changed, 1250 insertions, 0 deletions
diff --git a/doc/TODO.detail/prepare b/doc/TODO.detail/prepare
index 0ab2e4f256e..5d665126908 100644
--- a/doc/TODO.detail/prepare
+++ b/doc/TODO.detail/prepare
@@ -445,3 +445,1253 @@ query cache in shared memory...etc. Too much queries, but less answers :-)
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+From pgsql-hackers-owner+M21218@postgresql.org Fri Apr 12 04:52:19 2002
+Return-path: <pgsql-hackers-owner+M21218@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3C8qIS25666
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 04:52:18 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id AE2FA4769F1; Fri, 12 Apr 2002 03:54:34 -0400 (EDT)
+Received: from ara.zf.jcu.cz (ara.zf.jcu.cz [160.217.161.4])
+ by postgresql.org (Postfix) with ESMTP id A05A94769DC
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 03:51:27 -0400 (EDT)
+Received: from ara.zf.jcu.cz (LOCALHOST [127.0.0.1])
+ by ara.zf.jcu.cz (8.12.1/8.12.1/Debian -5) with ESMTP id g3C7pHBK012031;
+ Fri, 12 Apr 2002 09:51:17 +0200
+Received: (from zakkr@localhost)
+ by ara.zf.jcu.cz (8.12.1/8.12.1/Debian -5) id g3C7pGum012030;
+ Fri, 12 Apr 2002 09:51:16 +0200
+Date: Fri, 12 Apr 2002 09:51:16 +0200
+From: Karel Zak <zakkr@zf.jcu.cz>
+To: pgsql-hackers@postgresql.org
+cc: Hiroshi Inoue <Inoue@tpf.co.jp>
+Subject: Re: [HACKERS] 7.3 schedule
+Message-ID: <20020412095116.B6370@zf.jcu.cz>
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au> <3CB52C54.4020507@freaky-namuh.com> <20020411115434.201ff92f.nconway@klamath.dyndns.org> <3CB61DAB.5010601@freaky-namuh.com> <24184.1018581907@sss.pgh.pa.us> <3CB65B49.93F2F790@tpf.co.jp> <20020412004134.5d35a2dd.nconway@klamath.dyndns.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.2.5i
+In-Reply-To: <20020412004134.5d35a2dd.nconway@klamath.dyndns.org>; from nconway@klamath.dyndns.org on Fri, Apr 12, 2002 at 12:41:34AM -0400
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+On Fri, Apr 12, 2002 at 12:41:34AM -0400, Neil Conway wrote:
+> On Fri, 12 Apr 2002 12:58:01 +0900
+> "Hiroshi Inoue" <Inoue@tpf.co.jp> wrote:
+> >
+> > Just a confirmation.
+> > Someone is working on PREPARE/EXECUTE ?
+> > What about Karel's work ?
+
+ Right question :-)
+
+> I am. My work is based on Karel's stuff -- at the moment I'm still
+> basically working on getting Karel's patch to play nicely with
+> current sources; once that's done I'll be addressing whatever
+> issues are stopping the code from getting into CVS.
+
+ My patch (qcache) for PostgreSQL 7.0 is available at
+ ftp://ftp2.zf.jcu.cz/users/zakkr/pg/.
+
+ I very look forward to Neil's work on this.
+
+ Notes:
+
+ * It's experimental patch, but usable. All features below mentioned
+ works.
+
+ * PREPARE/EXECUTE is not only SQL statements, I think good idea is
+ create something common and robus for query-plan caching,
+ beacuse there is for example SPI too. The RI triggers are based
+ on SPI_saveplan().
+
+ * My patch knows EXECUTE INTO feature:
+
+ PREPARE foo AS SELECT * FROM pg_class WHERE relname ~~ $1 USING text;
+
+ EXECUTE foo USING 'pg%'; <-- standard select
+
+ EXECUTE foo INTO TEMP newtab USING 'pg%'; <-- select into
+
+
+ * The patch allows store query-planns to shared memory and is
+ possible EXECUTE it at more backends (over same DB) and planns
+ are persistent across connetions. For this feature I create special
+ memory context subsystem (like current aset.c, but it works with
+ IPC shared memory).
+
+ This is maybe too complex solution and (maybe) sufficient is cache
+ query in one backend only. I know unbelief about this shared
+ memory solution (Tom?).
+
+
+ Karel
+
+
+ My experimental patch README (excuse my English):
+
+ Implementation
+ ~~~~~~~~~~~~~~
+
+ The qCache allows save queryTree and queryPlan. There is available are
+ two space for data caching.
+
+ LOCAL - data are cached in backend non-shared memory and data aren't
+ available in other backends.
+
+ SHARE - data are cached in backend shared memory and data are
+ visible in all backends.
+
+ Because size of share memory pool is limited and it is set during
+ postmaster start up, the qCache must remove all old planns if pool is
+ full. You can mark each entry as "REMOVEABLE" or "NOTREMOVEABLE".
+
+ A removeable entry is removed if pool is full.
+
+ A not-removeable entry must be removed via qCache_Remove() or
+ the other routines. The qCache not remove this entry itself.
+
+ All records in qCache are cached (in the hash table) under some key.
+ The qCache knows two alternate of key --- "KEY_STRING" and "KEY_BINARY".
+
+ The qCache API not allows access to shared memory, all cached planns that
+ API returns are copy to CurrentMemoryContext. All (qCache_ ) routines lock
+ shmem itself (exception is qCache_RemoveOldest_ShareRemoveAble()).
+
+ - for locking is used spin lock.
+
+ Memory management
+ ~~~~~~~~~~~~~~~~~
+ The qCache use for qCache's shared pool its memory context independent on
+ standard aset/mcxt, but use compatible API --- it allows to use standard
+ palloc() (it is very needful for basic plan-tree operations, an example
+ for copyObject()). The qCache memory management is very simular to current
+ aset.c code. It is chunk-ed blocks too, but the block is smaller - 1024b.
+
+ The number of blocks is available set in postmaster 'argv' via option
+ '-Z'.
+
+ For plan storing is used separate MemoryContext for each plan, it
+ is good idea (Hiroshi's ?), bucause create new context is simple and
+ inexpensive and allows easy destroy (free) cached plan. This method is
+ used in my SPI overhaul instead TopMemoryContext feeding.
+
+ Postmaster
+ ~~~~~~~~~~
+ The query cache memory is init during potmaster startup. The size of
+ query cache pool is set via '-Z <number-of-blocks>' switch --- default
+ is 100 blocks where 1 block = 1024b, it is sufficient for 20-30 cached
+ planns. One query needs somewhere 3-10 blocks, for example query like
+
+ PREPARE sel AS SELECT * FROM pg_class;
+
+ needs 10Kb, because table pg_class has very much columns.
+
+ Note: for development I add SQL function: "SELECT qcache_state();",
+ this routine show usage of qCache.
+
+ SPI
+ ~~~
+ I a little overwrite SPI save plan method and remove TopMemoryContext
+ "feeding".
+
+ Standard SPI:
+
+ SPI_saveplan() - save each plan to separate standard memory context.
+
+ SPI_freeplan() - free plan.
+
+ By key SPI:
+
+ It is SPI interface for query cache and allows save planns to SHARED
+ or LOCAL cache 'by' arbitrary key (string or binary). Routines:
+
+ SPI_saveplan_bykey() - save plan to query cache
+
+ SPI_freeplan_bykey() - remove plan from query cache
+
+ SPI_fetchplan_bykey() - fetch plan saved in query cache
+
+ SPI_execp_bykey() - execute (via SPI) plan saved in query
+ cache
+
+ - now, users can write functions that save planns to shared memory
+ and planns are visible in all backend and are persistent arcoss
+ connection.
+
+ Example:
+ ~~~~~~~
+ /* ----------
+ * Save/exec query from shared cache via string key
+ * ----------
+ */
+ int keySize = 0;
+ flag = SPI_BYKEY_SHARE | SPI_BYKEY_STRING;
+ char *key = "my unique key";
+
+ res = SPI_execp_bykey(values, nulls, tcount, key, flag, keySize);
+
+ if (res == SPI_ERROR_PLANNOTFOUND)
+ {
+ /* --- not plan in cache - must create it --- */
+
+ void *plan;
+
+ plan = SPI_prepare(querystr, valnum, valtypes);
+ SPI_saveplan_bykey(plan, key, keySize, flag);
+
+ res = SPI_execute(plan, values, Nulls, tcount);
+ }
+
+ elog(NOTICE, "Processed: %d", SPI_processed);
+
+
+ PREPARE/EXECUTE
+ ~~~~~~~~~~~~~~~
+ * Syntax:
+
+ PREPARE <name> AS <query>
+ [ USING type, ... typeN ]
+ [ NOSHARE | SHARE | GLOBAL ]
+
+ EXECUTE <name>
+ [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ]
+ [ USING val, ... valN ]
+ [ NOSHARE | SHARE | GLOBAL ]
+
+ DEALLOCATE PREPARE
+ [ <name> [ NOSHARE | SHARE | GLOBAL ]]
+ [ ALL | ALL INTERNAL ]
+
+
+ I know that it is a little out of SQL92... (use CREATE/DROP PLAN instead
+ this?) --- what mean SQL standard guru?
+
+ * Where:
+
+ NOSHARE --- cached in local backend query cache - not accessable
+ from the others backends and not is persisten a across
+ conection.
+
+ SHARE --- cached in shared query cache and accessable from
+ all backends which work over same database.
+
+ GLOBAL --- cached in shared query cache and accessable from
+ all backends and all databases.
+
+ - default is 'SHARE'
+
+ Deallocate:
+
+ ALL --- deallocate all users's plans
+
+ ALL INTERNAL --- deallocate all internal plans, like planns
+ cached via SPI. It is needful if user
+ alter/drop table ...etc.
+
+ * Parameters:
+
+ "USING" part in the prepare statement is for datetype setting for
+ paremeters in the query. For example:
+
+ PREPARE sel AS SELECT * FROM pg_class WHERE relname ~~ $1 USING text;
+
+ EXECUTE sel USING 'pg%';
+
+
+ * Limitation:
+
+ - prepare/execute allow use full statement of SELECT/INSERT/DELETE/
+ UPDATE.
+ - possible is use union, subselects, limit, ofset, select-into
+
+
+ Performance:
+ ~~~~~~~~~~~
+ * the SPI
+
+ - I for my tests a little change RI triggers to use SPI by_key API
+ and save planns to shared qCache instead to internal RI hash table.
+
+ The RI use very simple (for parsing) queries and qCache interest is
+ not visible. It's better if backend very often startup and RI check
+ always same tables. In this situation speed go up --- 10-12%.
+ (This snapshot not include this RI change.)
+
+ But all depend on how much complicate for parser is query in
+ trigger.
+
+ * PREPARE/EXECUTE
+
+ - For tests I use query that not use some table (the executor is
+ in boredom state), but is difficult for the parser. An example:
+
+ SELECT 'a text ' || (10*10+(100^2))::text || ' next text ' || cast
+ (date_part('year', timestamp 'now') AS text );
+
+ - (10000 * this query):
+
+ standard select: 54 sec
+ via prepare/execute: 4 sec (93% better)
+
+ IMHO it is nod bad.
+
+ - For standard query like:
+
+ SELECT u.usename, r.relname FROM pg_class r, pg_user u WHERE
+ r.relowner = u.usesysid;
+
+ it is with PREPARE/EXECUTE 10-20% faster.
+
+--
+ Karel Zak <zakkr@zf.jcu.cz>
+ http://home.zf.jcu.cz/~zakkr/
+
+ C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
+
+---------------------------(end of broadcast)---------------------------
+TIP 4: Don't 'kill -9' the postmaster
+
+From pgsql-hackers-owner+M21228@postgresql.org Fri Apr 12 10:15:34 2002
+Return-path: <pgsql-hackers-owner+M21228@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CEFXS29835
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 10:15:33 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 7BFE1475A55; Fri, 12 Apr 2002 10:15:27 -0400 (EDT)
+Received: from sss.pgh.pa.us (unknown [192.204.191.242])
+ by postgresql.org (Postfix) with ESMTP id 5659B474E71
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 10:14:31 -0400 (EDT)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g3CEEQF27238;
+ Fri, 12 Apr 2002 10:14:26 -0400 (EDT)
+To: Karel Zak <zakkr@zf.jcu.cz>
+cc: pgsql-hackers@postgresql.org, Neil Conway <nconway@klamath.dyndns.org>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <20020412095116.B6370@zf.jcu.cz>
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au> <3CB52C54.4020507@freaky-namuh.com> <20020411115434.201ff92f.nconway@klamath.dyndns.org> <3CB61DAB.5010601@freaky-namuh.com> <24184.1018581907@sss.pgh.pa.us> <3CB65B49.93F2F790@tpf.co.jp> <20020412004134.5d35a2dd.nconway@klamath.dyndns.org> <20020412095116.B6370@zf.jcu.cz>
+Comments: In-reply-to Karel Zak <zakkr@zf.jcu.cz>
+ message dated "Fri, 12 Apr 2002 09:51:16 +0200"
+Date: Fri, 12 Apr 2002 10:14:26 -0400
+Message-ID: <27235.1018620866@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: ORr
+
+Karel Zak <zakkr@zf.jcu.cz> writes:
+> * The patch allows store query-planns to shared memory and is
+> possible EXECUTE it at more backends (over same DB) and planns
+> are persistent across connetions. For this feature I create special
+> memory context subsystem (like current aset.c, but it works with
+> IPC shared memory).
+> This is maybe too complex solution and (maybe) sufficient is cache
+> query in one backend only. I know unbelief about this shared
+> memory solution (Tom?).
+
+Yes, that is the part that was my sticking point last time around.
+(1) Because shared memory cannot be extended on-the-fly, I think it is
+a very bad idea to put data structures in there without some well
+thought out way of predicting/limiting their size. (2) How the heck do
+you get rid of obsoleted cached plans, if the things stick around in
+shared memory even after you start a new backend? (3) A shared cache
+requires locking; contention among multiple backends to access that
+shared resource could negate whatever performance benefit you might hope
+to realize from it.
+
+A per-backend cache kept in local memory avoids all of these problems,
+and I have seen no numbers to make me think that a shared plan cache
+would achieve significantly more performance benefit than a local one.
+
+ regards, tom lane
+
+---------------------------(end of broadcast)---------------------------
+TIP 5: Have you checked our extensive FAQ?
+
+http://www.postgresql.org/users-lounge/docs/faq.html
+
+From pgsql-hackers-owner+M21233@postgresql.org Fri Apr 12 12:26:32 2002
+Return-path: <pgsql-hackers-owner+M21233@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CGQVS11018
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 12:26:31 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 38DBB475B20; Fri, 12 Apr 2002 12:22:08 -0400 (EDT)
+Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35])
+ by postgresql.org (Postfix) with ESMTP id 0DA70475B9E
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 12:21:15 -0400 (EDT)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.11.6/8.10.1) id g3CGL4310492;
+ Fri, 12 Apr 2002 12:21:04 -0400 (EDT)
+From: Bruce Momjian <pgman@candle.pha.pa.us>
+Message-ID: <200204121621.g3CGL4310492@candle.pha.pa.us>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <27235.1018620866@sss.pgh.pa.us>
+To: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Fri, 12 Apr 2002 12:21:04 -0400 (EDT)
+cc: Karel Zak <zakkr@zf.jcu.cz>, pgsql-hackers@postgresql.org,
+ Neil Conway <nconway@klamath.dyndns.org>
+X-Mailer: ELM [version 2.4ME+ PL97 (25)]
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain; charset=US-ASCII
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+Tom Lane wrote:
+> Karel Zak <zakkr@zf.jcu.cz> writes:
+> > * The patch allows store query-planns to shared memory and is
+> > possible EXECUTE it at more backends (over same DB) and planns
+> > are persistent across connetions. For this feature I create special
+> > memory context subsystem (like current aset.c, but it works with
+> > IPC shared memory).
+> > This is maybe too complex solution and (maybe) sufficient is cache
+> > query in one backend only. I know unbelief about this shared
+> > memory solution (Tom?).
+>
+> Yes, that is the part that was my sticking point last time around.
+> (1) Because shared memory cannot be extended on-the-fly, I think it is
+> a very bad idea to put data structures in there without some well
+> thought out way of predicting/limiting their size. (2) How the heck do
+> you get rid of obsoleted cached plans, if the things stick around in
+> shared memory even after you start a new backend? (3) A shared cache
+> requires locking; contention among multiple backends to access that
+> shared resource could negate whatever performance benefit you might hope
+> to realize from it.
+>
+> A per-backend cache kept in local memory avoids all of these problems,
+> and I have seen no numbers to make me think that a shared plan cache
+> would achieve significantly more performance benefit than a local one.
+
+Certainly a shared cache would be good for apps that connect to issue a
+single query frequently. In such cases, there would be no local cache
+to use.
+
+--
+ Bruce Momjian | http://candle.pha.pa.us
+ pgman@candle.pha.pa.us | (610) 853-3000
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+---------------------------(end of broadcast)---------------------------
+TIP 4: Don't 'kill -9' the postmaster
+
+From pgsql-hackers-owner+M21234@postgresql.org Fri Apr 12 12:44:12 2002
+Return-path: <pgsql-hackers-owner+M21234@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CGiBS12385
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 12:44:12 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id AEAA7475C6C; Fri, 12 Apr 2002 12:43:17 -0400 (EDT)
+Received: from barry.xythos.com (h-64-105-36-191.SNVACAID.covad.net [64.105.36.191])
+ by postgresql.org (Postfix) with ESMTP id CE58C47598E
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 12:42:48 -0400 (EDT)
+Received: from xythos.com (localhost.localdomain [127.0.0.1])
+ by barry.xythos.com (8.11.6/8.11.6) with ESMTP id g3CGgaI02920;
+ Fri, 12 Apr 2002 09:42:36 -0700
+Message-ID: <3CB70E7C.3090801@xythos.com>
+Date: Fri, 12 Apr 2002 09:42:36 -0700
+From: Barry Lind <barry@xythos.com>
+User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020310
+X-Accept-Language: en-us, en
+MIME-Version: 1.0
+To: Tom Lane <tgl@sss.pgh.pa.us>
+cc: Karel Zak <zakkr@zf.jcu.cz>, pgsql-hackers@postgresql.org,
+ Neil Conway <nconway@klamath.dyndns.org>
+Subject: Re: [HACKERS] 7.3 schedule
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au> <3CB52C54.4020507@freaky-namuh.com> <20020411115434.201ff92f.nconway@klamath.dyndns.org> <3CB61DAB.5010601@freaky-namuh.com> <24184.1018581907@sss.pgh.pa.us> <3CB65B49.93F2F790@tpf.co.jp> <20020412004134.5d35a2dd.nconway@klamath.dyndns.org> <20020412095116.B6370@zf.jcu.cz> <27235.1018620866@sss.pgh.pa.us>
+Content-Type: text/plain; charset=us-ascii; format=flowed
+Content-Transfer-Encoding: 7bit
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: ORr
+
+
+
+Tom Lane wrote:
+> Yes, that is the part that was my sticking point last time around.
+> (1) Because shared memory cannot be extended on-the-fly, I think it is
+> a very bad idea to put data structures in there without some well
+> thought out way of predicting/limiting their size. (2) How the heck do
+> you get rid of obsoleted cached plans, if the things stick around in
+> shared memory even after you start a new backend? (3) A shared cache
+> requires locking; contention among multiple backends to access that
+> shared resource could negate whatever performance benefit you might hope
+> to realize from it.
+>
+> A per-backend cache kept in local memory avoids all of these problems,
+> and I have seen no numbers to make me think that a shared plan cache
+> would achieve significantly more performance benefit than a local one.
+>
+
+Oracle's implementation is a shared cache for all plans. This was
+introduced in Oracle 6 or 7 (I don't remember which anymore). The net
+effect was that in general there was a significant performance
+improvement with the shared cache. However poorly written apps can now
+bring the Oracle database to its knees because of the locking issues
+associated with the shared cache. For example if the most frequently
+run sql statements are coded poorly (i.e. they don't use bind variables,
+eg. 'select bar from foo where foobar = $1' vs. 'select bar from foo
+where foobar = || somevalue' (where somevalue is likely to be
+different on every call)) the shared cache doesn't help and its overhead
+becomes significant.
+
+thanks,
+--Barry
+
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 3: if posting/reading through Usenet, please send an appropriate
+subscribe-nomail command to majordomo@postgresql.org so that your
+message can get through to the mailing list cleanly
+
+From pgsql-hackers-owner+M21237@postgresql.org Fri Apr 12 12:50:28 2002
+Return-path: <pgsql-hackers-owner+M21237@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CGoRS13005
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 12:50:28 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 32A28475BA1; Fri, 12 Apr 2002 12:50:15 -0400 (EDT)
+Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35])
+ by postgresql.org (Postfix) with ESMTP id 07F1E475892
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 12:49:43 -0400 (EDT)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.11.6/8.10.1) id g3CGnbw12950;
+ Fri, 12 Apr 2002 12:49:37 -0400 (EDT)
+From: Bruce Momjian <pgman@candle.pha.pa.us>
+Message-ID: <200204121649.g3CGnbw12950@candle.pha.pa.us>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <3CB70E7C.3090801@xythos.com>
+To: Barry Lind <barry@xythos.com>
+Date: Fri, 12 Apr 2002 12:49:37 -0400 (EDT)
+cc: Tom Lane <tgl@sss.pgh.pa.us>, Karel Zak <zakkr@zf.jcu.cz>,
+ pgsql-hackers@postgresql.org, Neil Conway <nconway@klamath.dyndns.org>
+X-Mailer: ELM [version 2.4ME+ PL97 (25)]
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain; charset=US-ASCII
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+Barry Lind wrote:
+> Oracle's implementation is a shared cache for all plans. This was
+> introduced in Oracle 6 or 7 (I don't remember which anymore). The net
+> effect was that in general there was a significant performance
+> improvement with the shared cache. However poorly written apps can now
+> bring the Oracle database to its knees because of the locking issues
+> associated with the shared cache. For example if the most frequently
+> run sql statements are coded poorly (i.e. they don't use bind variables,
+> eg. 'select bar from foo where foobar = $1' vs. 'select bar from foo
+> where foobar = || somevalue' (where somevalue is likely to be
+> different on every call)) the shared cache doesn't help and its overhead
+> becomes significant.
+
+This is very interesting. We have always been concerned that shared
+cache invalidation could cause more of a performance problem that the
+shared cache gives benefit, and it sounds like you are saying exactly
+that.
+
+--
+ Bruce Momjian | http://candle.pha.pa.us
+ pgman@candle.pha.pa.us | (610) 853-3000
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+ (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+
+From pgsql-hackers-owner+M21238@postgresql.org Fri Apr 12 12:51:55 2002
+Return-path: <pgsql-hackers-owner+M21238@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CGptS13119
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 12:51:55 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id C599D475BC6; Fri, 12 Apr 2002 12:51:47 -0400 (EDT)
+Received: from sss.pgh.pa.us (unknown [192.204.191.242])
+ by postgresql.org (Postfix) with ESMTP id C9F94475892
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 12:51:26 -0400 (EDT)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g3CGpQF27967;
+ Fri, 12 Apr 2002 12:51:27 -0400 (EDT)
+To: Bruce Momjian <pgman@candle.pha.pa.us>
+cc: Karel Zak <zakkr@zf.jcu.cz>, pgsql-hackers@postgresql.org,
+ Neil Conway <nconway@klamath.dyndns.org>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <200204121621.g3CGL4310492@candle.pha.pa.us>
+References: <200204121621.g3CGL4310492@candle.pha.pa.us>
+Comments: In-reply-to Bruce Momjian <pgman@candle.pha.pa.us>
+ message dated "Fri, 12 Apr 2002 12:21:04 -0400"
+Date: Fri, 12 Apr 2002 12:51:26 -0400
+Message-ID: <27964.1018630286@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+Bruce Momjian <pgman@candle.pha.pa.us> writes:
+> Certainly a shared cache would be good for apps that connect to issue a
+> single query frequently. In such cases, there would be no local cache
+> to use.
+
+We have enough other problems with the single-query-per-connection
+scenario that I see no reason to believe that a shared plan cache will
+help materially. The correct answer for those folks will *always* be
+to find a way to reuse the connection.
+
+ regards, tom lane
+
+---------------------------(end of broadcast)---------------------------
+TIP 4: Don't 'kill -9' the postmaster
+
+From pgsql-hackers-owner+M21241@postgresql.org Fri Apr 12 16:25:46 2002
+Return-path: <pgsql-hackers-owner+M21241@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CKPkS03078
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 16:25:46 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 9C3BD475CC6; Fri, 12 Apr 2002 16:25:42 -0400 (EDT)
+Received: from klamath.dyndns.org (CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35])
+ by postgresql.org (Postfix) with ESMTP id B06D8475909
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 16:24:52 -0400 (EDT)
+Received: from jiro (jiro [192.168.40.7])
+ by klamath.dyndns.org (Postfix) with SMTP
+ id C05557013; Fri, 12 Apr 2002 16:24:53 -0400 (EDT)
+Date: Fri, 12 Apr 2002 16:24:48 -0400
+From: Neil Conway <nconway@klamath.dyndns.org>
+To: "Bruce Momjian" <pgman@candle.pha.pa.us>
+cc: tgl@sss.pgh.pa.us, zakkr@zf.jcu.cz, pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] 7.3 schedule
+Message-ID: <20020412162448.4d46d747.nconway@klamath.dyndns.org>
+In-Reply-To: <200204121621.g3CGL4310492@candle.pha.pa.us>
+References: <27235.1018620866@sss.pgh.pa.us>
+ <200204121621.g3CGL4310492@candle.pha.pa.us>
+X-Mailer: Sylpheed version 0.7.4 (GTK+ 1.2.10; i386-debian-linux-gnu)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: ORr
+
+On Fri, 12 Apr 2002 12:21:04 -0400 (EDT)
+"Bruce Momjian" <pgman@candle.pha.pa.us> wrote:
+> Tom Lane wrote:
+> > A per-backend cache kept in local memory avoids all of these problems,
+> > and I have seen no numbers to make me think that a shared plan cache
+> > would achieve significantly more performance benefit than a local one.
+>
+> Certainly a shared cache would be good for apps that connect to issue a
+> single query frequently. In such cases, there would be no local cache
+> to use.
+
+One problem with this kind of scenario is: what to do if the plan no
+longer exists for some reason? (e.g. the code that was supposed to be
+PREPARE-ing your statements failed to execute properly, or the cached
+plan has been evicted from shared memory, or the database was restarted,
+etc.) -- EXECUTE in and of itself won't have enough information to do
+anything useful. We could perhaps provide a means for an application
+to test for the existence of a cached plan (in which case the
+application developer will need to add logic to their application
+to re-prepare the query if necessary, which could get complicated).
+
+Cheers,
+
+Neil
+
+--
+Neil Conway <neilconway@rogers.com>
+PGP Key ID: DB3C29FC
+
+---------------------------(end of broadcast)---------------------------
+TIP 5: Have you checked our extensive FAQ?
+
+http://www.postgresql.org/users-lounge/docs/faq.html
+
+From pgsql-hackers-owner+M21242@postgresql.org Fri Apr 12 17:27:24 2002
+Return-path: <pgsql-hackers-owner+M21242@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CLRNS14410
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 17:27:23 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id E05A1475D30; Fri, 12 Apr 2002 17:26:40 -0400 (EDT)
+Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35])
+ by postgresql.org (Postfix) with ESMTP id 36BBB475858
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 17:25:44 -0400 (EDT)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.11.6/8.10.1) id g3CLPVa14231;
+ Fri, 12 Apr 2002 17:25:31 -0400 (EDT)
+From: Bruce Momjian <pgman@candle.pha.pa.us>
+Message-ID: <200204122125.g3CLPVa14231@candle.pha.pa.us>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <20020412162448.4d46d747.nconway@klamath.dyndns.org>
+To: Neil Conway <nconway@klamath.dyndns.org>
+Date: Fri, 12 Apr 2002 17:25:31 -0400 (EDT)
+cc: tgl@sss.pgh.pa.us, zakkr@zf.jcu.cz, pgsql-hackers@postgresql.org
+X-Mailer: ELM [version 2.4ME+ PL97 (25)]
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain; charset=US-ASCII
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+Neil Conway wrote:
+> On Fri, 12 Apr 2002 12:21:04 -0400 (EDT)
+> "Bruce Momjian" <pgman@candle.pha.pa.us> wrote:
+> > Tom Lane wrote:
+> > > A per-backend cache kept in local memory avoids all of these problems,
+> > > and I have seen no numbers to make me think that a shared plan cache
+> > > would achieve significantly more performance benefit than a local one.
+> >
+> > Certainly a shared cache would be good for apps that connect to issue a
+> > single query frequently. In such cases, there would be no local cache
+> > to use.
+>
+> One problem with this kind of scenario is: what to do if the plan no
+> longer exists for some reason? (e.g. the code that was supposed to be
+> PREPARE-ing your statements failed to execute properly, or the cached
+> plan has been evicted from shared memory, or the database was restarted,
+> etc.) -- EXECUTE in and of itself won't have enough information to do
+> anything useful. We could perhaps provide a means for an application
+> to test for the existence of a cached plan (in which case the
+> application developer will need to add logic to their application
+> to re-prepare the query if necessary, which could get complicated).
+
+Oh, are you thinking that one backend would do the PREPARE and another
+one the EXECUTE? I can't see that working at all. I thought there
+would some way to quickly test if the submitted query was in the cache,
+but maybe that is too much of a performance penalty to be worth it.
+
+--
+ Bruce Momjian | http://candle.pha.pa.us
+ pgman@candle.pha.pa.us | (610) 853-3000
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+---------------------------(end of broadcast)---------------------------
+TIP 3: if posting/reading through Usenet, please send an appropriate
+subscribe-nomail command to majordomo@postgresql.org so that your
+message can get through to the mailing list cleanly
+
+From tgl@sss.pgh.pa.us Fri Apr 12 17:36:17 2002
+Return-path: <tgl@sss.pgh.pa.us>
+Received: from sss.pgh.pa.us (root@[192.204.191.242])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CLaGS16061
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 17:36:17 -0400 (EDT)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g3CLaGF10813;
+ Fri, 12 Apr 2002 17:36:16 -0400 (EDT)
+To: Bruce Momjian <pgman@candle.pha.pa.us>
+cc: Neil Conway <nconway@klamath.dyndns.org>, zakkr@zf.jcu.cz,
+ pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <200204122125.g3CLPVa14231@candle.pha.pa.us>
+References: <200204122125.g3CLPVa14231@candle.pha.pa.us>
+Comments: In-reply-to Bruce Momjian <pgman@candle.pha.pa.us>
+ message dated "Fri, 12 Apr 2002 17:25:31 -0400"
+Date: Fri, 12 Apr 2002 17:36:16 -0400
+Message-ID: <10810.1018647376@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Status: ORr
+
+Bruce Momjian <pgman@candle.pha.pa.us> writes:
+> Oh, are you thinking that one backend would do the PREPARE and another
+> one the EXECUTE? I can't see that working at all.
+
+Uh, why exactly were you advocating a shared cache then? Wouldn't that
+be exactly the *point* of a shared cache?
+
+ regards, tom lane
+
+From pgsql-hackers-owner+M21245@postgresql.org Fri Apr 12 17:39:13 2002
+Return-path: <pgsql-hackers-owner+M21245@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CLdCS16515
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 17:39:12 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id A904B475E15; Fri, 12 Apr 2002 17:39:09 -0400 (EDT)
+Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35])
+ by postgresql.org (Postfix) with ESMTP id B1A3F4758DE
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 17:38:25 -0400 (EDT)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.11.6/8.10.1) id g3CLcFX16347;
+ Fri, 12 Apr 2002 17:38:15 -0400 (EDT)
+From: Bruce Momjian <pgman@candle.pha.pa.us>
+Message-ID: <200204122138.g3CLcFX16347@candle.pha.pa.us>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <10810.1018647376@sss.pgh.pa.us>
+To: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Fri, 12 Apr 2002 17:38:15 -0400 (EDT)
+cc: Neil Conway <nconway@klamath.dyndns.org>, zakkr@zf.jcu.cz,
+ pgsql-hackers@postgresql.org
+X-Mailer: ELM [version 2.4ME+ PL97 (25)]
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain; charset=US-ASCII
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+Tom Lane wrote:
+> Bruce Momjian <pgman@candle.pha.pa.us> writes:
+> > Oh, are you thinking that one backend would do the PREPARE and another
+> > one the EXECUTE? I can't see that working at all.
+>
+> Uh, why exactly were you advocating a shared cache then? Wouldn't that
+> be exactly the *point* of a shared cache?
+
+I thought it would somehow compare the SQL query string to the cached
+plans and if it matched, it would use that plan rather than make a new
+one. Any DDL statement would flush the cache.
+
+--
+ Bruce Momjian | http://candle.pha.pa.us
+ pgman@candle.pha.pa.us | (610) 853-3000
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+---------------------------(end of broadcast)---------------------------
+TIP 5: Have you checked our extensive FAQ?
+
+http://www.postgresql.org/users-lounge/docs/faq.html
+
+From pgsql-hackers-owner+M21246@postgresql.org Fri Apr 12 17:56:58 2002
+Return-path: <pgsql-hackers-owner+M21246@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3CLuvS19021
+ for <pgman@candle.pha.pa.us>; Fri, 12 Apr 2002 17:56:58 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 1B4D6475E2C; Fri, 12 Apr 2002 17:56:55 -0400 (EDT)
+Received: from voyager.corporate.connx.com (unknown [209.20.248.131])
+ by postgresql.org (Postfix) with ESMTP id 059F1475858
+ for <pgsql-hackers@postgresql.org>; Fri, 12 Apr 2002 17:56:13 -0400 (EDT)
+X-MimeOLE: Produced By Microsoft Exchange V6.0.4712.0
+content-class: urn:content-classes:message
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Subject: Re: [HACKERS] 7.3 schedule
+Date: Fri, 12 Apr 2002 14:59:15 -0700
+Message-ID: <D90A5A6C612A39408103E6ECDD77B82906F42C@voyager.corporate.connx.com>
+Thread-Topic: [HACKERS] 7.3 schedule
+Thread-Index: AcHia2aODSpgXEd4Tluz/N0jN5fJOQAAC//w
+From: "Dann Corbit" <DCorbit@connx.com>
+To: "Bruce Momjian" <pgman@candle.pha.pa.us>, "Tom Lane" <tgl@sss.pgh.pa.us>
+cc: "Neil Conway" <nconway@klamath.dyndns.org>, <zakkr@zf.jcu.cz>,
+ <pgsql-hackers@postgresql.org>
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Content-Transfer-Encoding: 8bit
+X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id g3CLuvS19021
+Status: OR
+
+-----Original Message-----
+From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
+Sent: Friday, April 12, 2002 2:38 PM
+To: Tom Lane
+Cc: Neil Conway; zakkr@zf.jcu.cz; pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] 7.3 schedule
+
+
+Tom Lane wrote:
+> Bruce Momjian <pgman@candle.pha.pa.us> writes:
+> > Oh, are you thinking that one backend would do the PREPARE and
+another
+> > one the EXECUTE? I can't see that working at all.
+>
+> Uh, why exactly were you advocating a shared cache then? Wouldn't
+that
+> be exactly the *point* of a shared cache?
+
+I thought it would somehow compare the SQL query string to the cached
+plans and if it matched, it would use that plan rather than make a new
+one. Any DDL statement would flush the cache.
+>>-------------------------------------------------------------------
+Many applications will have similar queries coming from lots of
+different end-users. Imagine an order-entry program where people are
+ordering parts. Many of the queries might look like this:
+
+SELECT part_number FROM parts WHERE part_id = 12324 AND part_cost
+< 12.95
+
+In order to cache this query, we first parse it to replace the data
+fields with paramter markers.
+Then it looks like this:
+SELECT part_number FROM parts WHERE part_id = ? AND part_cost < ?
+{in the case of a 'LIKE' query or some other query where you can use
+key information, you might have a symbolic replacement like this:
+WHERE field LIKE '{D}%' to indicate that the key can be used}
+Then, we make sure that the case is consistent by either capitalizing
+the whole query or changing it all into lower case:
+select part_number from parts where part_id = ? and part_cost < ?
+Then, we run a checksum on the parameterized string.
+The checksum might be used as a hash table key, where we keep some
+additional information like how stale the entry is, and a pointer to
+the actual parameterized SQL (in case the hash key has a collision
+it would be simply wrong to run an incorrect query for obvious enough
+reasons).
+Now, if there are a huge number of users of the same application, it
+makes sense that the probabilities of reusing queries goes up with
+the number of users of the same application. Therefore, I would
+advocate that the cache be kept in shared memory.
+
+Consider a single application with 100 different queries. Now, add
+one user, ten users, 100 users, ... 10,000 users and you can see
+that the benefit would be greater and greater as we add users.
+<<-------------------------------------------------------------------
+
+---------------------------(end of broadcast)---------------------------
+TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
+
+From pgsql-hackers-owner+M21270@postgresql.org Sat Apr 13 02:30:47 2002
+Return-path: <pgsql-hackers-owner+M21270@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3D6UkS07169
+ for <pgman@candle.pha.pa.us>; Sat, 13 Apr 2002 02:30:46 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 23FEC475D1E; Sat, 13 Apr 2002 02:30:38 -0400 (EDT)
+Received: from mail.iinet.net.au (symphony-01.iinet.net.au [203.59.3.33])
+ by postgresql.org (Postfix) with SMTP id A08A4475C6C
+ for <pgsql-hackers@postgresql.org>; Sat, 13 Apr 2002 02:29:37 -0400 (EDT)
+Received: (qmail 11594 invoked by uid 666); 13 Apr 2002 06:29:36 -0000
+Received: from unknown (HELO SOL) (203.59.103.193)
+ by mail.iinet.net.au with SMTP; 13 Apr 2002 06:29:36 -0000
+Message-ID: <002301c1e2b3$804bd000$0200a8c0@SOL>
+From: "Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
+To: "Barry Lind" <barry@xythos.com>, "Tom Lane" <tgl@sss.pgh.pa.us>
+cc: "Karel Zak" <zakkr@zf.jcu.cz>, <pgsql-hackers@postgresql.org>,
+ "Neil Conway" <nconway@klamath.dyndns.org>
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au> <3CB52C54.4020507@freaky-namuh.com> <20020411115434.201ff92f.nconway@klamath.dyndns.org> <3CB61DAB.5010601@freaky-namuh.com> <24184.1018581907@sss.pgh.pa.us> <3CB65B49.93F2F790@tpf.co.jp> <20020412004134.5d35a2dd.nconway@klamath.dyndns.org> <20020412095116.B6370@zf.jcu.cz> <27235.1018620866@sss.pgh.pa.us> <3CB70E7C.3090801@xythos.com>
+Subject: Re: [HACKERS] 7.3 schedule
+Date: Sat, 13 Apr 2002 14:21:50 +0800
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 5.50.4522.1200
+X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+> > thought out way of predicting/limiting their size. (2) How the heck do
+> > you get rid of obsoleted cached plans, if the things stick around in
+> > shared memory even after you start a new backend? (3) A shared cache
+> > requires locking; contention among multiple backends to access that
+> > shared resource could negate whatever performance benefit you might hope
+> > to realize from it.
+
+I don't understand all these locking problems? Surely the only lock a
+transaction would need on a stored query is one that prevents the cache
+invalidation mechanism from deleting it out from under it? Surely this
+means that there would be tonnes of readers on the cache - none of them
+blocking each other, and the odd invalidation event that needs a complete
+lock?
+
+Also, as for invalidation, there probably could be just two reasons to
+invalidate a query in the cache. (1) The cache is running out of space and
+you use LRU or something to remove old queries, or (2) someone runs ANALYZE,
+in which case all cached queries should just be flushed? If they specify an
+actual table to analyze, then just drop all queries on the table.
+
+Could this cache mechanism be used to make views fast as well? You could
+cache the queries that back views on first use, and then they can follow the
+above rules for flushing...
+
+Chris
+
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
+
+From pgsql-hackers-owner+M21276@postgresql.org Sat Apr 13 11:48:51 2002
+Return-path: <pgsql-hackers-owner+M21276@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3DFmoS27879
+ for <pgman@candle.pha.pa.us>; Sat, 13 Apr 2002 11:48:51 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 9EB81475C5C; Sat, 13 Apr 2002 11:46:52 -0400 (EDT)
+Received: from sss.pgh.pa.us (unknown [192.204.191.242])
+ by postgresql.org (Postfix) with ESMTP id 0FE0B474E78
+ for <pgsql-hackers@postgresql.org>; Sat, 13 Apr 2002 11:46:09 -0400 (EDT)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g3DFk2F15743;
+ Sat, 13 Apr 2002 11:46:02 -0400 (EDT)
+To: "Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
+cc: "Barry Lind" <barry@xythos.com>, "Karel Zak" <zakkr@zf.jcu.cz>,
+ pgsql-hackers@postgresql.org, "Neil Conway" <nconway@klamath.dyndns.org>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <002301c1e2b3$804bd000$0200a8c0@SOL>
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au> <3CB52C54.4020507@freaky-namuh.com> <20020411115434.201ff92f.nconway@klamath.dyndns.org> <3CB61DAB.5010601@freaky-namuh.com> <24184.1018581907@sss.pgh.pa.us> <3CB65B49.93F2F790@tpf.co.jp> <20020412004134.5d35a2dd.nconway@klamath.dyndns.org> <20020412095116.B6370@zf.jcu.cz> <27235.1018620866@sss.pgh.pa.us> <3CB70E7C.3090801@xythos.com> <002301c1e2b3$804bd000$0200a8c0@SOL>
+Comments: In-reply-to "Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
+ message dated "Sat, 13 Apr 2002 14:21:50 +0800"
+Date: Sat, 13 Apr 2002 11:46:01 -0400
+Message-ID: <15740.1018712761@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
+> thought out way of predicting/limiting their size. (2) How the heck do
+> you get rid of obsoleted cached plans, if the things stick around in
+> shared memory even after you start a new backend? (3) A shared cache
+> requires locking; contention among multiple backends to access that
+> shared resource could negate whatever performance benefit you might hope
+> to realize from it.
+
+> I don't understand all these locking problems?
+
+Searching the cache and inserting/deleting entries in the cache probably
+have to be mutually exclusive; concurrent insertions probably won't work
+either (at least not without a remarkably intelligent data structure).
+Unless the cache hit rate is remarkably high, there are going to be lots
+of insertions --- and, at steady state, an equal rate of deletions ---
+leading to lots of contention.
+
+This could possibly be avoided if the cache is not used for all query
+plans but only for explicitly PREPAREd plans, so that only explicit
+EXECUTEs would need to search it. But that approach also makes a
+sizable dent in the usefulness of the cache to begin with.
+
+ regards, tom lane
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+ (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+
+From pgsql-hackers-owner+M21280@postgresql.org Sat Apr 13 14:36:34 2002
+Return-path: <pgsql-hackers-owner+M21280@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3DIaYS10293
+ for <pgman@candle.pha.pa.us>; Sat, 13 Apr 2002 14:36:34 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id AA151475BB1; Sat, 13 Apr 2002 14:36:17 -0400 (EDT)
+Received: from klamath.dyndns.org (CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35])
+ by postgresql.org (Postfix) with ESMTP id 42993475BCB
+ for <pgsql-hackers@postgresql.org>; Sat, 13 Apr 2002 14:35:42 -0400 (EDT)
+Received: from jiro (jiro [192.168.40.7])
+ by klamath.dyndns.org (Postfix) with SMTP
+ id 82B84700C; Sat, 13 Apr 2002 14:35:42 -0400 (EDT)
+Date: Sat, 13 Apr 2002 14:35:39 -0400
+From: Neil Conway <nconway@klamath.dyndns.org>
+To: "Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
+cc: barry@xythos.com, tgl@sss.pgh.pa.us, zakkr@zf.jcu.cz,
+ pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] 7.3 schedule
+Message-ID: <20020413143539.7818bf7d.nconway@klamath.dyndns.org>
+In-Reply-To: <002301c1e2b3$804bd000$0200a8c0@SOL>
+References: <GNELIHDDFBOCMGBFGEFOGEBHCCAA.chriskl@familyhealth.com.au>
+ <3CB52C54.4020507@freaky-namuh.com>
+ <20020411115434.201ff92f.nconway@klamath.dyndns.org>
+ <3CB61DAB.5010601@freaky-namuh.com>
+ <24184.1018581907@sss.pgh.pa.us>
+ <3CB65B49.93F2F790@tpf.co.jp>
+ <20020412004134.5d35a2dd.nconway@klamath.dyndns.org>
+ <20020412095116.B6370@zf.jcu.cz>
+ <27235.1018620866@sss.pgh.pa.us>
+ <3CB70E7C.3090801@xythos.com>
+ <002301c1e2b3$804bd000$0200a8c0@SOL>
+X-Mailer: Sylpheed version 0.7.4 (GTK+ 1.2.10; i386-debian-linux-gnu)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+On Sat, 13 Apr 2002 14:21:50 +0800
+"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> wrote:
+> Could this cache mechanism be used to make views fast as well?
+
+The current PREPARE/EXECUTE code will speed up queries that use
+rules of any kind, including views: the query plan is cached after
+it has been rewritten as necessary, so (AFAIK) this should mean
+that rules will be evaluated once when the query is PREPAREd, and
+then cached for subsequent EXECUTE commands.
+
+Cheers,
+
+Neil
+
+--
+Neil Conway <neilconway@rogers.com>
+PGP Key ID: DB3C29FC
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+ (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+
+From pgsql-hackers-owner+M21309@postgresql.org Sun Apr 14 15:22:44 2002
+Return-path: <pgsql-hackers-owner+M21309@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3EJMiS24239
+ for <pgman@candle.pha.pa.us>; Sun, 14 Apr 2002 15:22:44 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 44BAC475E05; Sun, 14 Apr 2002 15:22:42 -0400 (EDT)
+Received: from ara.zf.jcu.cz (ara.zf.jcu.cz [160.217.161.4])
+ by postgresql.org (Postfix) with ESMTP id 3CD03475925
+ for <pgsql-hackers@postgresql.org>; Sun, 14 Apr 2002 15:21:58 -0400 (EDT)
+Received: from ara.zf.jcu.cz (LOCALHOST [127.0.0.1])
+ by ara.zf.jcu.cz (8.12.1/8.12.1/Debian -5) with ESMTP id g3EJLiBK012612;
+ Sun, 14 Apr 2002 21:21:44 +0200
+Received: (from zakkr@localhost)
+ by ara.zf.jcu.cz (8.12.1/8.12.1/Debian -5) id g3EJLi3k012611;
+ Sun, 14 Apr 2002 21:21:44 +0200
+Date: Sun, 14 Apr 2002 21:21:44 +0200
+From: Karel Zak <zakkr@zf.jcu.cz>
+To: Tom Lane <tgl@sss.pgh.pa.us>
+cc: Bruce Momjian <pgman@candle.pha.pa.us>, pgsql-hackers@postgresql.org,
+ Neil Conway <nconway@klamath.dyndns.org>
+Subject: Re: [HACKERS] 7.3 schedule
+Message-ID: <20020414212144.A12196@zf.jcu.cz>
+References: <200204121621.g3CGL4310492@candle.pha.pa.us> <27964.1018630286@sss.pgh.pa.us>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.2.5i
+In-Reply-To: <27964.1018630286@sss.pgh.pa.us>; from tgl@sss.pgh.pa.us on Fri, Apr 12, 2002 at 12:51:26PM -0400
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+On Fri, Apr 12, 2002 at 12:51:26PM -0400, Tom Lane wrote:
+> Bruce Momjian <pgman@candle.pha.pa.us> writes:
+> > Certainly a shared cache would be good for apps that connect to issue a
+> > single query frequently. In such cases, there would be no local cache
+> > to use.
+>
+> We have enough other problems with the single-query-per-connection
+> scenario that I see no reason to believe that a shared plan cache will
+> help materially. The correct answer for those folks will *always* be
+> to find a way to reuse the connection.
+
+ My query cache was write for 7.0. If some next release will use
+ pre-forked backend and after a client disconnection the backend will
+ still alives and waits for new client the shared cache is (maybe:-) not
+ needful. The current backend fork model is killer of all possible
+ caching.
+
+ We have more caches. I hope persistent backend help will help to all
+ and I'm sure that speed will grow up with persistent backend and
+ persistent caches without shared memory usage. There I can agree with
+ Tom :-)
+
+ Karel
+
+--
+ Karel Zak <zakkr@zf.jcu.cz>
+ http://home.zf.jcu.cz/~zakkr/
+
+ C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
+
+---------------------------(end of broadcast)---------------------------
+TIP 4: Don't 'kill -9' the postmaster
+
+From pgsql-hackers-owner+M21321@postgresql.org Sun Apr 14 20:40:08 2002
+Return-path: <pgsql-hackers-owner+M21321@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g3F0e7S29723
+ for <pgman@candle.pha.pa.us>; Sun, 14 Apr 2002 20:40:07 -0400 (EDT)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+ by postgresql.org (Postfix) with SMTP
+ id 3B5FB475DC5; Sun, 14 Apr 2002 20:40:03 -0400 (EDT)
+Received: from localhost.localdomain (bgp01077650bgs.wanarb01.mi.comcast.net [68.40.135.112])
+ by postgresql.org (Postfix) with ESMTP id 7B1D3474E71
+ for <pgsql-hackers@postgresql.org>; Sun, 14 Apr 2002 20:39:18 -0400 (EDT)
+Received: from localhost (camber@localhost)
+ by localhost.localdomain (8.11.6/8.11.6) with ESMTP id g3F0cmD10631;
+ Sun, 14 Apr 2002 20:38:48 -0400
+X-Authentication-Warning: localhost.localdomain: camber owned process doing -bs
+Date: Sun, 14 Apr 2002 20:38:48 -0400 (EDT)
+From: Brian Bruns <camber@ais.org>
+X-X-Sender: <camber@localhost.localdomain>
+To: Hannu Krosing <hannu@tm.ee>
+cc: <pgsql-hackers@postgresql.org>
+Subject: Re: [HACKERS] 7.3 schedule
+In-Reply-To: <1018704763.1784.1.camel@taru.tm.ee>
+Message-ID: <Pine.LNX.4.33.0204142027180.9523-100000@localhost.localdomain>
+MIME-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+Status: OR
+
+On 13 Apr 2002, Hannu Krosing wrote:
+
+> On Fri, 2002-04-12 at 03:04, Brian Bruns wrote:
+> > On 11 Apr 2002, Hannu Krosing wrote:
+> >
+> > > IIRC someone started work on modularising the network-related parts with
+> > > a goal of supporting DRDA (DB2 protocol) and others in future.
+> >
+> > That was me, although I've been bogged down lately, and haven't been able
+> > to get back to it.
+>
+> Has any of your modularisation work got into CVS yet ?
+
+No, Bruce didn't like the way I did certain things, and had some qualms
+about the value of supporting multiple wire protocols IIRC. Plus the
+patch was not really ready for primetime yet.
+
+I'm hoping to get back to it soon and sync it with the latest CVS, and
+clean up the odds and ends.
+
+> > DRDA, btw, is not just a DB2 protocol but an opengroup
+> > spec that hopefully will someday be *the* standard on the wire database
+> > protocol. DRDA handles prepare/execute and is completely binary in
+> > representation, among other advantages.
+>
+> What about extensibility - is there some predefined way of adding new
+> types ?
+
+Not really, there is some ongoing standards activity adding some new
+features. The list of supported types is pretty impressive, anything in
+particular you are looking for?
+
+> Also, does it handle NOTIFY ?
+
+I don't know the answer to this. The spec is pretty huge, so it may, but
+I haven't seen it.
+
+Even if it is supported as a secondary protocol, I believe there is alot
+of value in having a single database protocol standard. (why else would I
+be doing it!). I'm also looking into what it will take to do the same for
+MySQL and Firebird. Hopefully they will be receptive to the idea as well.
+
+> ----------------
+> Hannu
+
+Cheers,
+
+Brian
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 5: Have you checked our extensive FAQ?
+
+http://www.postgresql.org/users-lounge/docs/faq.html
+