mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
1071 lines
40 KiB
Plaintext
1071 lines
40 KiB
Plaintext
|
From pgsql-hackers-owner+M18800=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 15:25:43 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18800=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1DKPgP09129
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 15:25:42 -0500 (EST)
|
|||
|
Received: (qmail 83025 invoked by alias); 13 Feb 2002 20:25:41 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 13 Feb 2002 20:25:41 -0000
|
|||
|
Received: from h97.c194.tor.velocet.net (H97.C194.tor.velocet.net [216.138.194.97])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1DK7kE77269
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 15:07:47 -0500 (EST)
|
|||
|
(envelope-from rbt@zort.ca)
|
|||
|
Received: (qmail 41141 invoked by uid 0); 13 Feb 2002 20:07:41 -0000
|
|||
|
Received: from h97.c194.tor.velocet.net (HELO jester) (216.138.194.97)
|
|||
|
by 192.168.1.11 with RC4-MD5 encrypted SMTP; 13 Feb 2002 20:07:41 -0000
|
|||
|
Message-ID: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
From: "Rod Taylor" <rbt@zort.ca>
|
|||
|
To: "Hackers List" <pgsql-hackers@postgresql.org>
|
|||
|
Subject: [HACKERS] NAMEDATALEN Changes
|
|||
|
Date: Wed, 13 Feb 2002 15:07:50 -0500
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: multipart/mixed;
|
|||
|
boundary="----=_NextPart_000_0036_01C1B4A0.343E4DF0"
|
|||
|
X-Priority: 3
|
|||
|
X-MSMail-Priority: Normal
|
|||
|
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
|
|||
|
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
This is a multi-part message in MIME format.
|
|||
|
|
|||
|
------=_NextPart_000_0036_01C1B4A0.343E4DF0
|
|||
|
Content-Type: text/plain; charset="iso-8859-1"
|
|||
|
Content-Transfer-Encoding: 7bit
|
|||
|
|
|||
|
NAMEDATALEN's benchmarked are 32, 64, 128 and 512. Attached is the
|
|||
|
shell script I used to do it.
|
|||
|
|
|||
|
First row of a set is the time(1) for the pgbench -i run, second is
|
|||
|
the actual benchmark. Aside from the 'real' time of 64 there is a
|
|||
|
distinct increase in time required, but not significant.
|
|||
|
|
|||
|
Benchmarks were run for 3000 transactions with scale factor of 5, but
|
|||
|
only 1 client. If there is a preferred setting for pgbench I can do
|
|||
|
an overnight run with it. Machine is a dual 500Mhz celery with 384MB
|
|||
|
ram and 2 IBM Deskstars in Raid 0, and a seperate system drive.
|
|||
|
|
|||
|
Anything but 32 fails the 'name' check in the regression tests -- I
|
|||
|
assume this is expected?
|
|||
|
|
|||
|
Don't know why 64 has a high 'real' time, but the system times are
|
|||
|
appropriate.
|
|||
|
|
|||
|
NAMEDATALEN: 32
|
|||
|
|
|||
|
158.97 real 1.81 user 0.14 sys
|
|||
|
|
|||
|
80.58 real 1.30 user 3.81 sys
|
|||
|
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 64
|
|||
|
|
|||
|
248.40 real 1.85 user 0.10 sys
|
|||
|
|
|||
|
96.36 real 1.44 user 3.86 sys
|
|||
|
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 128
|
|||
|
|
|||
|
156.74 real 1.84 user 0.10 sys
|
|||
|
|
|||
|
94.36 real 1.47 user 4.01 sys
|
|||
|
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 512
|
|||
|
|
|||
|
157.99 real 1.83 user 0.12 sys
|
|||
|
|
|||
|
101.14 real 1.47 user 4.23 sys
|
|||
|
|
|||
|
--
|
|||
|
Rod Taylor
|
|||
|
|
|||
|
Your eyes are weary from staring at the CRT. You feel sleepy. Notice
|
|||
|
how restful it is to watch the cursor blink. Close your eyes. The
|
|||
|
opinions stated above are yours. You cannot imagine why you ever felt
|
|||
|
otherwise.
|
|||
|
|
|||
|
|
|||
|
------=_NextPart_000_0036_01C1B4A0.343E4DF0
|
|||
|
Content-Type: application/octet-stream; name="datalenbench.sh"
|
|||
|
Content-Transfer-Encoding: quoted-printable
|
|||
|
Content-Disposition: attachment; filename="datalenbench.sh"
|
|||
|
|
|||
|
#!/bin/sh
|
|||
|
|
|||
|
PGSRC=3D/data/buildtree/postgres/postgresql-7.2
|
|||
|
PGBASEPORT=3D5400
|
|||
|
PGBASEBIN=3D/data/buildtree/postgres/postgres72
|
|||
|
|
|||
|
LOG=3D/home/rbt/temp/bench_namedatalen.log
|
|||
|
|
|||
|
|
|||
|
for newDATALEN in 32 64 128 512 ; do
|
|||
|
|
|||
|
PGBIN=3D${PGBASEBIN}_${newDATALEN}
|
|||
|
PGPORT=3D`echo "${PGBASEPORT}+${newDATALEN}" | bc`
|
|||
|
|
|||
|
sed -E 's/NAMEDATALEN\s[0-9]+/NAMEDATALEN ${newDATALEN}/g' ${PGSRC}/src/i=
|
|||
|
nclude/postgres_ext.h > ${PGSRC}/src/include/postgres_ext.h.tmp
|
|||
|
mv ${PGSRC}/src/include/postgres_ext.h.tmp ${PGSRC}/src/include/postgres_=
|
|||
|
ext.h
|
|||
|
|
|||
|
cd ${PGSRC}
|
|||
|
./configure --prefix=3D${PGBIN} --with-pgport=3D${PGPORT} || (echo "UNABL=
|
|||
|
E TO CONFIGURE"; exit)
|
|||
|
|
|||
|
make clean
|
|||
|
make clean install
|
|||
|
|
|||
|
cd ${PGSRC}/contrib/pgbench
|
|||
|
|
|||
|
gmake install
|
|||
|
|
|||
|
|
|||
|
${PGBIN}/bin/initdb -D ${PGBIN}/data || (echo "UNABLE TO INITIALIZE"; ex=
|
|||
|
it 1)
|
|||
|
|
|||
|
${PGBIN}/bin/pg_ctl -D ${PGBIN}/data start || (echo "UNABLE TO START"; e=
|
|||
|
xit 1)
|
|||
|
|
|||
|
sleep 5
|
|||
|
|
|||
|
echo "NAMEDATALEN: ${newDATALEN}" >> ${LOG}
|
|||
|
echo >> ${LOG}
|
|||
|
time -a -o ${LOG} ${PGBIN}/bin/pgbench -i -s 5 -d template1 -p ${PGPORT}
|
|||
|
|
|||
|
time -a -o ${LOG} ${PGBIN}/bin/pgbench -t 3000 -s 5 -d template1 -p ${PGP=
|
|||
|
ORT}
|
|||
|
echo >> ${LOG}
|
|||
|
echo >> ${LOG}
|
|||
|
|
|||
|
${PGBIN}/bin/pg_ctl -D ${PGBIN}/data stop
|
|||
|
rm -rf ${PGBIN}
|
|||
|
done
|
|||
|
|
|||
|
------=_NextPart_000_0036_01C1B4A0.343E4DF0
|
|||
|
Content-Type: text/plain
|
|||
|
Content-Disposition: inline
|
|||
|
Content-Transfer-Encoding: binary
|
|||
|
MIME-Version: 1.0
|
|||
|
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 5: Have you checked our extensive FAQ?
|
|||
|
|
|||
|
http://www.postgresql.org/users-lounge/docs/faq.html
|
|||
|
|
|||
|
------=_NextPart_000_0036_01C1B4A0.343E4DF0--
|
|||
|
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18806=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 17:13:45 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18806=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1DMDiP15852
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 17:13:44 -0500 (EST)
|
|||
|
Received: (qmail 13525 invoked by alias); 13 Feb 2002 22:12:53 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 13 Feb 2002 22:12:53 -0000
|
|||
|
Received: from sss.pgh.pa.us ([192.204.191.242])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1DLsHE09337
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 16:54:17 -0500 (EST)
|
|||
|
(envelope-from tgl@sss.pgh.pa.us)
|
|||
|
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 g1DLrmf00943;
|
|||
|
Wed, 13 Feb 2002 16:53:49 -0500 (EST)
|
|||
|
To: "Rod Taylor" <rbt@zort.ca>
|
|||
|
cc: "Hackers List" <pgsql-hackers@postgresql.org>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
In-Reply-To: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
References: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
Comments: In-reply-to "Rod Taylor" <rbt@zort.ca>
|
|||
|
message dated "Wed, 13 Feb 2002 15:07:50 -0500"
|
|||
|
Date: Wed, 13 Feb 2002 16:53:48 -0500
|
|||
|
Message-ID: <940.1013637228@sss.pgh.pa.us>
|
|||
|
From: Tom Lane <tgl@sss.pgh.pa.us>
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
"Rod Taylor" <rbt@zort.ca> writes:
|
|||
|
> [ some hard data ]
|
|||
|
|
|||
|
Great! The numbers for namedatalen = 64 seem like an outlier; perhaps
|
|||
|
something else going on on your system? Did you try more than one run?
|
|||
|
|
|||
|
> Anything but 32 fails the 'name' check in the regression tests -- I
|
|||
|
> assume this is expected?
|
|||
|
|
|||
|
Right. If you eyeball the actual diffs for the test you should see that
|
|||
|
the diff is due to a long name not getting truncated where the test
|
|||
|
expects it to be.
|
|||
|
|
|||
|
regards, tom lane
|
|||
|
|
|||
|
---------------------------(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+M18805=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 17:13:39 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18805=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1DMDcP15802
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 17:13:39 -0500 (EST)
|
|||
|
Received: (qmail 13545 invoked by alias); 13 Feb 2002 22:12:54 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 13 Feb 2002 22:12:54 -0000
|
|||
|
Received: from h97.c194.tor.velocet.net (H97.C194.tor.velocet.net [216.138.194.97])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1DM7iE12735
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 17:07:44 -0500 (EST)
|
|||
|
(envelope-from rbt@zort.ca)
|
|||
|
Received: (qmail 41562 invoked by uid 0); 13 Feb 2002 22:07:45 -0000
|
|||
|
Received: from h97.c194.tor.velocet.net (HELO jester) (216.138.194.97)
|
|||
|
by 192.168.1.11 with RC4-MD5 encrypted SMTP; 13 Feb 2002 22:07:45 -0000
|
|||
|
Message-ID: <00f501c1b4da$e2f7b7c0$8001a8c0@jester>
|
|||
|
From: "Rod Taylor" <rbt@zort.ca>
|
|||
|
To: "Tom Lane" <tgl@sss.pgh.pa.us>
|
|||
|
cc: "Hackers List" <pgsql-hackers@postgresql.org>
|
|||
|
References: <003901c1b4ca$1d762500$8001a8c0@jester> <940.1013637228@sss.pgh.pa.us>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
Date: Wed, 13 Feb 2002 17:07:54 -0500
|
|||
|
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 6.00.2600.0000
|
|||
|
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
> > Great! The numbers for namedatalen = 64 seem like an outlier;
|
|||
|
perhaps
|
|||
|
> something else going on on your system? Did you try more than one
|
|||
|
run?
|
|||
|
|
|||
|
Ran it again shortly after sending the email. It fell in line (mid
|
|||
|
way between 32 and 128) with Real time as would normally be expected.
|
|||
|
The times for the other values and 64's system times were very close
|
|||
|
to the original so I won't bother posting them again.
|
|||
|
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 5: Have you checked our extensive FAQ?
|
|||
|
|
|||
|
http://www.postgresql.org/users-lounge/docs/faq.html
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18807=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 17:58:53 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18807=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1DMwqP19126
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 17:58:52 -0500 (EST)
|
|||
|
Received: (qmail 26752 invoked by alias); 13 Feb 2002 22:58:21 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 13 Feb 2002 22:58:21 -0000
|
|||
|
Received: from post.webmailer.de (natwar.webmailer.de [192.67.198.70])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1DMRoE22486
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 17:27:51 -0500 (EST)
|
|||
|
(envelope-from barwick@gmx.net)
|
|||
|
Received: from there (pD9EB1E9E.dip.t-dialin.net [217.235.30.158])
|
|||
|
by post.webmailer.de (8.9.3/8.8.7) with SMTP id XAA22201;
|
|||
|
Wed, 13 Feb 2002 23:27:16 +0100 (MET)
|
|||
|
Message-ID: <200202132227.XAA22201@post.webmailer.de>
|
|||
|
From: Ian Barwick <barwick@gmx.net>
|
|||
|
To: "Rod Taylor" <rbt@zort.ca>, "Hackers List" <pgsql-hackers@postgresql.org>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
Date: Wed, 13 Feb 2002 23:27:08 +0100
|
|||
|
X-Mailer: KMail [version 1.3.1]
|
|||
|
References: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
In-Reply-To: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: Multipart/Mixed;
|
|||
|
boundary="------------Boundary-00=_81THUZ3BONDS8SCE1A8O"
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
--------------Boundary-00=_81THUZ3BONDS8SCE1A8O
|
|||
|
Content-Type: text/plain; charset="iso-2022-jp"
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
On Wednesday 13 February 2002 21:07, Rod Taylor wrote:
|
|||
|
> NAMEDATALEN's benchmarked are 32, 64, 128 and 512. Attached is the
|
|||
|
> shell script I used to do it.
|
|||
|
|
|||
|
Attached is a modified version for Linux, if anyone is interested.
|
|||
|
|
|||
|
Will run it overnight out of quasi-scientific interest.
|
|||
|
|
|||
|
Nice to have an idea what kind of effect my very long NAMEDATALEN setting
|
|||
|
(128) has.
|
|||
|
|
|||
|
|
|||
|
Yours
|
|||
|
|
|||
|
Ian Barwick
|
|||
|
--------------Boundary-00=_81THUZ3BONDS8SCE1A8O
|
|||
|
Content-Type: application/x-shellscript; name="datalenbench.sh"
|
|||
|
Content-Transfer-Encoding: base64
|
|||
|
Content-Disposition: attachment; filename="datalenbench.sh"
|
|||
|
|
|||
|
IyEvYmluL3NoCgpQR1NSQz1+cG9zdGdyZXMvcGdiZW5jaC9wb3N0Z3Jlc3Fs
|
|||
|
LTcuMgpQR0JBU0VQT1JUPTU0MDAKUEdCQVNFQklOPX5wb3N0Z3Jlcy9ob21l
|
|||
|
L3Bvc3RncmVzL3BnYmVuY2gvcG9zdGdyZXM3MgoKTE9HPX5wb3N0Z3Jlcy9i
|
|||
|
ZW5jaF9uYW1lZGF0YWxlbi5sb2cKCmZvciBuZXdEQVRBTEVOIGluIDMyIDY0
|
|||
|
IDEyOCA1MTIgOyBkbwoKICBQR0JJTj0ke1BHQkFTRUJJTn1fJHtuZXdEQVRB
|
|||
|
TEVOfQogIFBHUE9SVD1gZWNobyAiJHtQR0JBU0VQT1JUfSske25ld0RBVEFM
|
|||
|
RU59IiB8IGJjYAoKICBzZWQgInMvTkFNRURBVEFMRU5bWzpzcGFjZTpdXVsw
|
|||
|
LTldXHsxLFx9L05BTUVEQVRBTEVOICRuZXdEQVRBTEVOL2ciICR7UEdTUkN9
|
|||
|
L3NyYy9pbmNsdWRlL3Bvc3RncmVzX2V4dC5oID4gJHtQR1NSQ30vc3JjL2lu
|
|||
|
Y2x1ZGUvcG9zdGdyZXNfZXh0LmgudG1wCiAgbXYgJHtQR1NSQ30vc3JjL2lu
|
|||
|
Y2x1ZGUvcG9zdGdyZXNfZXh0LmgudG1wICR7UEdTUkN9L3NyYy9pbmNsdWRl
|
|||
|
L3Bvc3RncmVzX2V4dC5oCgogIGNkICR7UEdTUkN9CgogIC4vY29uZmlndXJl
|
|||
|
IC0tcHJlZml4PSR7UEdCSU59IC0td2l0aC1wZ3BvcnQ9JHtQR1BPUlR9IHx8
|
|||
|
IChlY2hvICJVTkFCTEUgVE8gQ09ORklHVVJFIjsgZXhpdCkKCiAgbWFrZSBj
|
|||
|
bGVhbgogIG1ha2UgY2xlYW4gaW5zdGFsbAoKICBjZCAke1BHU1JDfS9jb250
|
|||
|
cmliL3BnYmVuY2gKCiAgZ21ha2UgaW5zdGFsbAoKCiAgJHtQR0JJTn0vYmlu
|
|||
|
L2luaXRkYiAtRCAke1BHQklOfS9kYXRhICB8fCAoZWNobyAiVU5BQkxFIFRP
|
|||
|
IElOSVRJQUxJWkUiOyBleGl0IDEpCgogICR7UEdCSU59L2Jpbi9wZ19jdGwg
|
|||
|
LUQgJHtQR0JJTn0vZGF0YSBzdGFydCAgfHwgKGVjaG8gIlVOQUJMRSBUTyBT
|
|||
|
VEFSVCI7IGV4aXQgMSkKCiAgc2xlZXAgNQoKICBlY2hvICJOQU1FREFUQUxF
|
|||
|
TjogJHtuZXdEQVRBTEVOfSIgPj4gJHtMT0d9CgogICMgcG9pbnQgdG8gR05V
|
|||
|
IHRpbWUgKHNob3VsZCB3b3JrIG9uIHJlY2VudCBTdVNFIC8gUmVkSGF0KTsg
|
|||
|
WU1NVgogIFRJTUU9L3Vzci9iaW4vdGltZQogIFRJTUVfRk9STUFUPSIlZSBy
|
|||
|
ZWFsICVVIHVzZXIgJVMgc3lzIgoKICAkVElNRSAtYSAtbyAke0xPR30gLWYg
|
|||
|
IiRUSU1FX0ZPUk1BVCIgJHtQR0JJTn0vYmluL3BnYmVuY2ggLWkgLXMgNSAt
|
|||
|
ZCB0ZW1wbGF0ZTEgLXAgJHtQR1BPUlR9CgogICRUSU1FIC1hIC1vICR7TE9H
|
|||
|
fSAtZiAiJFRJTUVfRk9STUFUIiAke1BHQklOfS9iaW4vcGdiZW5jaCAtdCAz
|
|||
|
MDAwIC1zIDUgLWQgdGVtcGxhdGUxIC1wICR7UEdQT1JUfSAKICBlY2hvICA+
|
|||
|
PiAke0xPR30KICBlY2hvICA+PiAke0xPR30KCiAgJHtQR0JJTn0vYmluL3Bn
|
|||
|
X2N0bCAtRCAke1BHQklOfS9kYXRhIHN0b3AKICBybSAtcmYgJHtQR0JJTn0K
|
|||
|
ZG9uZQoK
|
|||
|
|
|||
|
--------------Boundary-00=_81THUZ3BONDS8SCE1A8O
|
|||
|
Content-Type: text/plain
|
|||
|
Content-Disposition: inline
|
|||
|
Content-Transfer-Encoding: binary
|
|||
|
MIME-Version: 1.0
|
|||
|
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
|
|||
|
|
|||
|
--------------Boundary-00=_81THUZ3BONDS8SCE1A8O--
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18811=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 19:13:40 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18811=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1E0DdP24221
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 19:13:39 -0500 (EST)
|
|||
|
Received: (qmail 40165 invoked by alias); 14 Feb 2002 00:13:34 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 00:13:34 -0000
|
|||
|
Received: from student.gvsu.edu ([148.61.7.124])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1E0ABE39822
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 19:10:11 -0500 (EST)
|
|||
|
(envelope-from peter_e@gmx.net)
|
|||
|
Received: from [148.61.250.151] [148.61.250.151] by student.gvsu.edu
|
|||
|
with Novonyx SMTP Server $Revision: 1.1 $; Wed, 13 Feb 2002 19:10:16 -0500 (EDT)
|
|||
|
Date: Wed, 13 Feb 2002 19:12:57 -0500 (EST)
|
|||
|
From: Peter Eisentraut <peter_e@gmx.net>
|
|||
|
X-Sender: <peter@peter.localdomain>
|
|||
|
To: Rod Taylor <rbt@zort.ca>
|
|||
|
cc: Hackers List <pgsql-hackers@postgresql.org>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
In-Reply-To: <003901c1b4ca$1d762500$8001a8c0@jester>
|
|||
|
Message-ID: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain>
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
Rod Taylor writes:
|
|||
|
|
|||
|
> NAMEDATALEN's benchmarked are 32, 64, 128 and 512. Attached is the
|
|||
|
> shell script I used to do it.
|
|||
|
|
|||
|
That's around a 15% performance loss for increasing it to 64 or 128.
|
|||
|
Seems pretty scary actually.
|
|||
|
|
|||
|
--
|
|||
|
Peter Eisentraut peter_e@gmx.net
|
|||
|
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18815=candle.pha.pa.us=pgman@postgresql.org Wed Feb 13 20:02:31 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18815=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1E12TP29895
|
|||
|
for <pgman@candle.pha.pa.us>; Wed, 13 Feb 2002 20:02:29 -0500 (EST)
|
|||
|
Received: (qmail 49786 invoked by alias); 14 Feb 2002 01:02:26 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 01:02:26 -0000
|
|||
|
Received: from sss.pgh.pa.us ([192.204.191.242])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1E10oE49562
|
|||
|
for <pgsql-hackers@postgresql.org>; Wed, 13 Feb 2002 20:00:50 -0500 (EST)
|
|||
|
(envelope-from tgl@sss.pgh.pa.us)
|
|||
|
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 g1E107f04416;
|
|||
|
Wed, 13 Feb 2002 20:00:07 -0500 (EST)
|
|||
|
To: Peter Eisentraut <peter_e@gmx.net>
|
|||
|
cc: Rod Taylor <rbt@zort.ca>, Hackers List <pgsql-hackers@postgresql.org>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
In-Reply-To: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain>
|
|||
|
References: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain>
|
|||
|
Comments: In-reply-to Peter Eisentraut <peter_e@gmx.net>
|
|||
|
message dated "Wed, 13 Feb 2002 19:12:57 -0500"
|
|||
|
Date: Wed, 13 Feb 2002 20:00:06 -0500
|
|||
|
Message-ID: <4413.1013648406@sss.pgh.pa.us>
|
|||
|
From: Tom Lane <tgl@sss.pgh.pa.us>
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
Peter Eisentraut <peter_e@gmx.net> writes:
|
|||
|
> That's around a 15% performance loss for increasing it to 64 or 128.
|
|||
|
> Seems pretty scary actually.
|
|||
|
|
|||
|
Some of that could be bought back by fixing hashname() to not iterate
|
|||
|
past the first \0 when calculating the hash of a NAME datum; and then
|
|||
|
cc_hashname could go away. Not sure how much this would buy though.
|
|||
|
|
|||
|
Looking closely at Rod's script, I realize that the user+sys times it is
|
|||
|
reporting are not the backend's but the pgbench client's. So it's
|
|||
|
impossible to tell from this how much of the extra cost is extra I/O and
|
|||
|
how much is CPU. I'm actually quite surprised that the client side
|
|||
|
shows any CPU-time difference at all; I wouldn't think it ever sees any
|
|||
|
null-padded NAME values.
|
|||
|
|
|||
|
regards, tom lane
|
|||
|
|
|||
|
---------------------------(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+M18817=candle.pha.pa.us=pgman@postgresql.org Thu Feb 14 01:22:04 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18817=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1E6M3P26219
|
|||
|
for <pgman@candle.pha.pa.us>; Thu, 14 Feb 2002 01:22:03 -0500 (EST)
|
|||
|
Received: (qmail 83168 invoked by alias); 14 Feb 2002 06:22:05 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 06:22:05 -0000
|
|||
|
Received: from klamath.dyndns.org (CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1E5xfE81904
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 00:59:41 -0500 (EST)
|
|||
|
(envelope-from nconway@klamath.dyndns.org)
|
|||
|
Received: from localhost.localdomain (jiro [192.168.40.7])
|
|||
|
by klamath.dyndns.org (Postfix) with ESMTP id 11D2E7007
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 00:59:41 -0500 (EST)
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
From: Neil Conway <nconway@klamath.dyndns.org>
|
|||
|
To: pgsql-hackers@postgresql.org
|
|||
|
In-Reply-To: <4413.1013648406@sss.pgh.pa.us>
|
|||
|
References: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain>
|
|||
|
<4413.1013648406@sss.pgh.pa.us>
|
|||
|
Content-Type: multipart/mixed; boundary="=-0nvLRoTY5hWeegGhITre"
|
|||
|
X-Mailer: Evolution/1.0.2
|
|||
|
Date: 14 Feb 2002 00:59:40 -0500
|
|||
|
Message-ID: <1013666380.5380.19.camel@jiro>
|
|||
|
MIME-Version: 1.0
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: ORr
|
|||
|
|
|||
|
--=-0nvLRoTY5hWeegGhITre
|
|||
|
Content-Type: text/plain
|
|||
|
Content-Transfer-Encoding: 7bit
|
|||
|
|
|||
|
On Wed, 2002-02-13 at 20:00, Tom Lane wrote:
|
|||
|
> Peter Eisentraut <peter_e@gmx.net> writes:
|
|||
|
> > That's around a 15% performance loss for increasing it to 64 or 128.
|
|||
|
> > Seems pretty scary actually.
|
|||
|
>
|
|||
|
> Some of that could be bought back by fixing hashname() to not iterate
|
|||
|
> past the first \0 when calculating the hash of a NAME datum; and then
|
|||
|
> cc_hashname could go away. Not sure how much this would buy though.
|
|||
|
|
|||
|
I've attached a pretty trivial patch that implements this. Instead of
|
|||
|
automatically hashing NAMEDATALEN bytes, hashname() uses only strlen()
|
|||
|
bytes: this should improve both the common case (small identifers, 5-10
|
|||
|
characters long), as well as reduce the penalty when NAMEDATALEN is
|
|||
|
increased. The patch passes the regression tests, FWIW. I didn't remove
|
|||
|
cc_hashname() -- I'll tackle that tomorrow unless anyone objects...
|
|||
|
|
|||
|
I also did some pretty simple benchmarks; however, I'd appreciate it
|
|||
|
anyone could confirm these results.
|
|||
|
|
|||
|
pg_bench: scale factor 1, 1 client, 10000 transactions.
|
|||
|
|
|||
|
hardware: p3-850, 384 MB RAM, slow laptop IDE disk
|
|||
|
|
|||
|
Run 1: Patch applied, NAMEDATALEN = 32
|
|||
|
|
|||
|
number of transactions actually processed: 10000/10000
|
|||
|
tps = 19.940020(including connections establishing)
|
|||
|
tps = 19.940774(excluding connections establishing)
|
|||
|
|
|||
|
Run 2: Patch applied, NAMEDATALEN = 128
|
|||
|
|
|||
|
number of transactions actually processed: 10000/10000
|
|||
|
tps = 20.849385(including connections establishing)
|
|||
|
tps = 20.850010(excluding connections establishing)
|
|||
|
|
|||
|
Run 3: Vanilla CVS, NAMEDATALEN = 32
|
|||
|
(This is to check that the patch doesn't cause performance regressions
|
|||
|
for the "common case")
|
|||
|
|
|||
|
number of transactions actually processed: 10000/10000
|
|||
|
tps = 18.295418(including connections establishing)
|
|||
|
tps = 18.296191(excluding connections establishing)
|
|||
|
|
|||
|
The performance improvement @ NAMEDATALEN = 128 seems strange. As I
|
|||
|
said, these benchmarks may not be particularly accurate, so I'd suggest
|
|||
|
waiting for others to contribute results before drawing any conclusions.
|
|||
|
|
|||
|
Oh, and this is my first "real" Pg patch, so my apologies if I've
|
|||
|
screwed something up. ;-)
|
|||
|
|
|||
|
Cheers,
|
|||
|
|
|||
|
Neil
|
|||
|
|
|||
|
--
|
|||
|
Neil Conway <neilconway@rogers.com>
|
|||
|
PGP Key ID: DB3C29FC
|
|||
|
|
|||
|
--=-0nvLRoTY5hWeegGhITre
|
|||
|
Content-Disposition: attachment; filename=hash_len.patch
|
|||
|
Content-Transfer-Encoding: quoted-printable
|
|||
|
Content-Type: text/x-patch; charset=ISO-8859-1
|
|||
|
|
|||
|
*** ./src/backend/access/hash/hashfunc.c.orig Wed Feb 13 21:09:37 2002
|
|||
|
--- ./src/backend/access/hash/hashfunc.c Thu Feb 14 00:39:42 2002
|
|||
|
***************
|
|||
|
*** 95,101 ****
|
|||
|
{
|
|||
|
char *key =3D NameStr(*PG_GETARG_NAME(0));
|
|||
|
=20=20
|
|||
|
! return hash_any((char *) key, NAMEDATALEN);
|
|||
|
}
|
|||
|
=20=20
|
|||
|
/*
|
|||
|
--- 95,101 ----
|
|||
|
{
|
|||
|
char *key =3D NameStr(*PG_GETARG_NAME(0));
|
|||
|
=20=20
|
|||
|
! return hash_any(key, strlen(key));
|
|||
|
}
|
|||
|
=20=20
|
|||
|
/*
|
|||
|
***************
|
|||
|
*** 125,131 ****
|
|||
|
*
|
|||
|
* (Comment from the original db3 hashing code: )
|
|||
|
*
|
|||
|
! * "This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
|
|||
|
* units. On the first time through the loop we get the 'leftover bytes'
|
|||
|
* (strlen % 8). On every later iteration, we perform 8 HASHC's so we ha=
|
|||
|
ndle
|
|||
|
* all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. =
|
|||
|
If
|
|||
|
--- 125,131 ----
|
|||
|
*
|
|||
|
* (Comment from the original db3 hashing code: )
|
|||
|
*
|
|||
|
! * This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
|
|||
|
* units. On the first time through the loop we get the 'leftover bytes'
|
|||
|
* (strlen % 8). On every later iteration, we perform 8 HASHC's so we ha=
|
|||
|
ndle
|
|||
|
* all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. =
|
|||
|
If
|
|||
|
***************
|
|||
|
*** 134,140 ****
|
|||
|
* "OZ's original sdbm hash"
|
|||
|
*/
|
|||
|
Datum
|
|||
|
! hash_any(char *keydata, int keylen)
|
|||
|
{
|
|||
|
uint32 n;
|
|||
|
int loop;
|
|||
|
--- 134,140 ----
|
|||
|
* "OZ's original sdbm hash"
|
|||
|
*/
|
|||
|
Datum
|
|||
|
! hash_any(const char *keydata, int keylen)
|
|||
|
{
|
|||
|
uint32 n;
|
|||
|
int loop;
|
|||
|
*** ./src/include/access/hash.h.orig Wed Feb 13 22:43:06 2002
|
|||
|
--- ./src/include/access/hash.h Thu Feb 14 00:38:35 2002
|
|||
|
***************
|
|||
|
*** 265,271 ****
|
|||
|
extern Datum hashint2vector(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashname(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashvarlena(PG_FUNCTION_ARGS);
|
|||
|
! extern Datum hash_any(char *keydata, int keylen);
|
|||
|
=20=20
|
|||
|
=20=20
|
|||
|
/* private routines */
|
|||
|
--- 265,271 ----
|
|||
|
extern Datum hashint2vector(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashname(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashvarlena(PG_FUNCTION_ARGS);
|
|||
|
! extern Datum hash_any(const char *keydata, int keylen);
|
|||
|
=20=20
|
|||
|
=20=20
|
|||
|
/* private routines */
|
|||
|
|
|||
|
--=-0nvLRoTY5hWeegGhITre
|
|||
|
Content-Type: text/plain
|
|||
|
Content-Disposition: inline
|
|||
|
Content-Transfer-Encoding: binary
|
|||
|
MIME-Version: 1.0
|
|||
|
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
|
|||
|
|
|||
|
--=-0nvLRoTY5hWeegGhITre--
|
|||
|
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18819=candle.pha.pa.us=pgman@postgresql.org Thu Feb 14 09:03:43 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18819=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1EE3gP17661
|
|||
|
for <pgman@candle.pha.pa.us>; Thu, 14 Feb 2002 09:03:42 -0500 (EST)
|
|||
|
Received: (qmail 68050 invoked by alias); 14 Feb 2002 14:03:37 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 14:03:37 -0000
|
|||
|
Received: from CopelandConsulting.Net (dsl-24293-ld.customer.centurytel.net [209.142.135.135])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1EE1FE67720
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 09:01:15 -0500 (EST)
|
|||
|
(envelope-from greg@copelandconsulting.net)
|
|||
|
Received: from there (mouse.copelandconsulting.net [192.168.1.2])
|
|||
|
by CopelandConsulting.Net (8.10.1/8.10.1) with SMTP id g1EE1Dk24399;
|
|||
|
Thu, 14 Feb 2002 08:01:14 -0600 (CST)
|
|||
|
Message-ID: <CCC.200202141401.g1EE1Dk24399@CopelandConsulting.Net>
|
|||
|
X-Trade-Id: <CCC.Thu, 14 Feb 2002 08:01:14 -0600 (CST).Thu, 14 Feb 2002 08:01:14 -0600 (CST).200202141401.g1EE1Dk24399.g1EE1Dk24399@CopelandConsulting.Net.
|
|||
|
Content-Type: text/plain;
|
|||
|
charset="iso-8859-1"
|
|||
|
From: Greg Copeland <greg@CopelandConsulting.Net>
|
|||
|
Organization: Copeland Computer Consulting
|
|||
|
To: Neil Conway <nconway@klamath.dyndns.org>, pgsql-hackers@postgresql.org
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
Date: Thu, 14 Feb 2002 08:00:58 -0600
|
|||
|
X-Mailer: KMail [version 1.3.1]
|
|||
|
References: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain> <4413.1013648406@sss.pgh.pa.us> <1013666380.5380.19.camel@jiro>
|
|||
|
In-Reply-To: <1013666380.5380.19.camel@jiro>
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
-----BEGIN PGP SIGNED MESSAGE-----
|
|||
|
Hash: SHA1
|
|||
|
|
|||
|
On Wednesday 13 February 2002 23:59, Neil Conway wrote:
|
|||
|
> On Wed, 2002-02-13 at 20:00, Tom Lane wrote:
|
|||
|
|
|||
|
[perf hit comment removed]
|
|||
|
|
|||
|
>
|
|||
|
> I've attached a pretty trivial patch that implements this. Instead of
|
|||
|
> automatically hashing NAMEDATALEN bytes, hashname() uses only strlen()
|
|||
|
> bytes: this should improve both the common case (small identifers, 5-10
|
|||
|
> characters long), as well as reduce the penalty when NAMEDATALEN is
|
|||
|
> increased. The patch passes the regression tests, FWIW. I didn't remove
|
|||
|
> cc_hashname() -- I'll tackle that tomorrow unless anyone objects...
|
|||
|
>
|
|||
|
> I also did some pretty simple benchmarks; however, I'd appreciate it
|
|||
|
> anyone could confirm these results.
|
|||
|
>
|
|||
|
|
|||
|
Please bare with me on this as this is my first posting having any real
|
|||
|
content. <20>Please don't hang me out if I've overlooked anything and I'm
|
|||
|
pointing out that I'm making a rather large assumption. Please correct as
|
|||
|
needed.
|
|||
|
|
|||
|
The primary assumption is that the actual key lengths can be less than
|
|||
|
NAMEDATALEN. That is, if the string, "shortkey" is a valid input key (??)
|
|||
|
which provides a key length of 8-bytes as input to the hash_any() function
|
|||
|
even though NAMEDATALEN may be something like 128 or larger. If this
|
|||
|
assumption is correct, then wouldn't increasing the default input key size
|
|||
|
(NAMEDATALEN) beyond the maximum actual key length be a bug? That is to say,
|
|||
|
if we have a key with only 8-bytes of data and we iterrate over 128-bytes,
|
|||
|
wouldn't the resulting hash be arbitrary and invalid as it would be hashing
|
|||
|
memory which is not reflective of the key being hashed?
|
|||
|
|
|||
|
If my assumptions are correct, then it sounds like using the strlen()
|
|||
|
implementation (assuming input keys are valid C-strings) is really the proper
|
|||
|
implementation short of using an adjusted min(NAMEDATALEN,strlen()) type
|
|||
|
approach.
|
|||
|
|
|||
|
[snip - var NAMEDATALEN benchmark results]
|
|||
|
|
|||
|
|
|||
|
Greg
|
|||
|
-----BEGIN PGP SIGNATURE-----
|
|||
|
Version: GnuPG v1.0.6 (GNU/Linux)
|
|||
|
Comment: For info see http://www.gnupg.org
|
|||
|
|
|||
|
iD8DBQE8a8Mg4lr1bpbcL6kRAlaxAJ47CO+ExL/ZMo/i6LDoetXrul9qqQCfQli3
|
|||
|
AvqN6RJjSuAH/p/mpZ8J4JY=
|
|||
|
=wnVM
|
|||
|
-----END PGP SIGNATURE-----
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 5: Have you checked our extensive FAQ?
|
|||
|
|
|||
|
http://www.postgresql.org/users-lounge/docs/faq.html
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18820=candle.pha.pa.us=pgman@postgresql.org Thu Feb 14 10:14:25 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18820=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1EFEOP25217
|
|||
|
for <pgman@candle.pha.pa.us>; Thu, 14 Feb 2002 10:14:24 -0500 (EST)
|
|||
|
Received: (qmail 80096 invoked by alias); 14 Feb 2002 15:14:19 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 15:14:19 -0000
|
|||
|
Received: from sss.pgh.pa.us ([192.204.191.242])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1EEvpE77298
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 09:57:51 -0500 (EST)
|
|||
|
(envelope-from tgl@sss.pgh.pa.us)
|
|||
|
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 g1EEvof08568;
|
|||
|
Thu, 14 Feb 2002 09:57:50 -0500 (EST)
|
|||
|
To: Greg Copeland <greg@CopelandConsulting.Net>
|
|||
|
cc: Neil Conway <nconway@klamath.dyndns.org>, pgsql-hackers@postgresql.org
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
In-Reply-To: <CCC.200202141401.g1EE1Dk24399@CopelandConsulting.Net>
|
|||
|
References: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain> <4413.1013648406@sss.pgh.pa.us> <1013666380.5380.19.camel@jiro> <CCC.200202141401.g1EE1Dk24399@CopelandConsulting.Net>
|
|||
|
Comments: In-reply-to Greg Copeland <greg@CopelandConsulting.Net>
|
|||
|
message dated "Thu, 14 Feb 2002 08:00:58 -0600"
|
|||
|
Date: Thu, 14 Feb 2002 09:57:50 -0500
|
|||
|
Message-ID: <8565.1013698670@sss.pgh.pa.us>
|
|||
|
From: Tom Lane <tgl@sss.pgh.pa.us>
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
Greg Copeland <greg@CopelandConsulting.Net> writes:
|
|||
|
> if we have a key with only 8-bytes of data and we iterrate over 128-bytes,
|
|||
|
> wouldn't the resulting hash be arbitrary and invalid as it would be hashing
|
|||
|
> memory which is not reflective of the key being hashed?
|
|||
|
|
|||
|
As long as we do it *consistently*, we can do it either way. Using the
|
|||
|
trailing nulls in the hash does alter the computed hash value --- but
|
|||
|
we're only ever gonna compare the hash value against other hash values
|
|||
|
computed on other NAMEs by this same routine.
|
|||
|
|
|||
|
This all assumes that the inputs are valid NAMEs, viz strlen <
|
|||
|
NAMEDATALEN and no funny business beyond the first \0. In practice,
|
|||
|
however, if a bogus NAME were handed to us we would just as soon ignore
|
|||
|
any characters beyond the first \0, because the ordering comparison
|
|||
|
operators for NAME all do so (they're all based on strncmp), as do the
|
|||
|
I/O routines etc. So this change actually makes the system more
|
|||
|
self-consistent not less so.
|
|||
|
|
|||
|
regards, tom lane
|
|||
|
|
|||
|
---------------------------(end of broadcast)---------------------------
|
|||
|
TIP 6: Have you searched our list archives?
|
|||
|
|
|||
|
http://archives.postgresql.org
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18827=candle.pha.pa.us=pgman@postgresql.org Thu Feb 14 13:53:52 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18827=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1EIrpP17729
|
|||
|
for <pgman@candle.pha.pa.us>; Thu, 14 Feb 2002 13:53:51 -0500 (EST)
|
|||
|
Received: (qmail 47648 invoked by alias); 14 Feb 2002 18:53:50 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 18:53:50 -0000
|
|||
|
Received: from klamath.dyndns.org (CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1EIbiE46318
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 13:37:44 -0500 (EST)
|
|||
|
(envelope-from nconway@klamath.dyndns.org)
|
|||
|
Received: by klamath.dyndns.org (Postfix, from userid 1000)
|
|||
|
id 032E8700C; Thu, 14 Feb 2002 13:37:44 -0500 (EST)
|
|||
|
Date: Thu, 14 Feb 2002 13:37:43 -0500
|
|||
|
To: pgsql-hackers@postgresql.org
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
Message-ID: <20020214183743.GA10423@klamath.dyndns.org>
|
|||
|
Mail-Followup-To: pgsql-hackers@postgresql.org
|
|||
|
References: <Pine.LNX.4.30.0202131912010.683-100000@peter.localdomain> <4413.1013648406@sss.pgh.pa.us> <1013666380.5380.19.camel@jiro>
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: multipart/mixed; boundary="huq684BweRXVnRxX"
|
|||
|
Content-Disposition: inline
|
|||
|
In-Reply-To: <1013666380.5380.19.camel@jiro>
|
|||
|
User-Agent: Mutt/1.3.27i
|
|||
|
From: nconway@klamath.dyndns.org (Neil Conway)
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
--huq684BweRXVnRxX
|
|||
|
Content-Type: text/plain; charset=us-ascii
|
|||
|
Content-Disposition: inline
|
|||
|
|
|||
|
On Thu, Feb 14, 2002 at 12:59:40AM -0500, Neil Conway wrote:
|
|||
|
> I've attached a pretty trivial patch that implements this. Instead of
|
|||
|
> automatically hashing NAMEDATALEN bytes, hashname() uses only strlen()
|
|||
|
> bytes: this should improve both the common case (small identifers, 5-10
|
|||
|
> characters long), as well as reduce the penalty when NAMEDATALEN is
|
|||
|
> increased. The patch passes the regression tests, FWIW. I didn't remove
|
|||
|
> cc_hashname() -- I'll tackle that tomorrow unless anyone objects...
|
|||
|
|
|||
|
Okay, I've attached a new version that removes cc_hashname(). As with
|
|||
|
the previous patch, this passes the regression tests. Feedback is welcome.
|
|||
|
|
|||
|
Cheers,
|
|||
|
|
|||
|
Neil
|
|||
|
|
|||
|
|
|||
|
--huq684BweRXVnRxX
|
|||
|
Content-Type: text/plain; charset=us-ascii
|
|||
|
Content-Disposition: attachment; filename="hash_len.patch"
|
|||
|
|
|||
|
*** ./src/backend/access/hash/hashfunc.c.orig Wed Feb 13 21:09:37 2002
|
|||
|
--- ./src/backend/access/hash/hashfunc.c Thu Feb 14 00:39:42 2002
|
|||
|
***************
|
|||
|
*** 95,101 ****
|
|||
|
{
|
|||
|
char *key = NameStr(*PG_GETARG_NAME(0));
|
|||
|
|
|||
|
! return hash_any((char *) key, NAMEDATALEN);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
--- 95,101 ----
|
|||
|
{
|
|||
|
char *key = NameStr(*PG_GETARG_NAME(0));
|
|||
|
|
|||
|
! return hash_any(key, strlen(key));
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
***************
|
|||
|
*** 125,131 ****
|
|||
|
*
|
|||
|
* (Comment from the original db3 hashing code: )
|
|||
|
*
|
|||
|
! * "This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
|
|||
|
* units. On the first time through the loop we get the 'leftover bytes'
|
|||
|
* (strlen % 8). On every later iteration, we perform 8 HASHC's so we handle
|
|||
|
* all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If
|
|||
|
--- 125,131 ----
|
|||
|
*
|
|||
|
* (Comment from the original db3 hashing code: )
|
|||
|
*
|
|||
|
! * This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
|
|||
|
* units. On the first time through the loop we get the 'leftover bytes'
|
|||
|
* (strlen % 8). On every later iteration, we perform 8 HASHC's so we handle
|
|||
|
* all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If
|
|||
|
***************
|
|||
|
*** 134,140 ****
|
|||
|
* "OZ's original sdbm hash"
|
|||
|
*/
|
|||
|
Datum
|
|||
|
! hash_any(char *keydata, int keylen)
|
|||
|
{
|
|||
|
uint32 n;
|
|||
|
int loop;
|
|||
|
--- 134,140 ----
|
|||
|
* "OZ's original sdbm hash"
|
|||
|
*/
|
|||
|
Datum
|
|||
|
! hash_any(const char *keydata, int keylen)
|
|||
|
{
|
|||
|
uint32 n;
|
|||
|
int loop;
|
|||
|
*** ./src/backend/utils/cache/catcache.c.orig Thu Feb 14 12:51:00 2002
|
|||
|
--- ./src/backend/utils/cache/catcache.c Thu Feb 14 12:53:05 2002
|
|||
|
***************
|
|||
|
*** 93,99 ****
|
|||
|
static Index CatalogCacheComputeTupleHashIndex(CatCache *cache,
|
|||
|
HeapTuple tuple);
|
|||
|
static void CatalogCacheInitializeCache(CatCache *cache);
|
|||
|
- static Datum cc_hashname(PG_FUNCTION_ARGS);
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
--- 93,98 ----
|
|||
|
***************
|
|||
|
*** 109,115 ****
|
|||
|
case CHAROID:
|
|||
|
return hashchar;
|
|||
|
case NAMEOID:
|
|||
|
! return cc_hashname;
|
|||
|
case INT2OID:
|
|||
|
return hashint2;
|
|||
|
case INT2VECTOROID:
|
|||
|
--- 108,114 ----
|
|||
|
case CHAROID:
|
|||
|
return hashchar;
|
|||
|
case NAMEOID:
|
|||
|
! return hashname;
|
|||
|
case INT2OID:
|
|||
|
return hashint2;
|
|||
|
case INT2VECTOROID:
|
|||
|
***************
|
|||
|
*** 129,151 ****
|
|||
|
return (PGFunction) NULL;
|
|||
|
}
|
|||
|
}
|
|||
|
-
|
|||
|
- static Datum
|
|||
|
- cc_hashname(PG_FUNCTION_ARGS)
|
|||
|
- {
|
|||
|
- /*
|
|||
|
- * We need our own variant of hashname because we want to accept
|
|||
|
- * null-terminated C strings as search values for name fields. So, we
|
|||
|
- * have to make sure the data is correctly padded before we compute
|
|||
|
- * the hash value.
|
|||
|
- */
|
|||
|
- NameData my_n;
|
|||
|
-
|
|||
|
- namestrcpy(&my_n, NameStr(*PG_GETARG_NAME(0)));
|
|||
|
-
|
|||
|
- return DirectFunctionCall1(hashname, NameGetDatum(&my_n));
|
|||
|
- }
|
|||
|
-
|
|||
|
|
|||
|
/*
|
|||
|
* Standard routine for creating cache context if it doesn't exist yet
|
|||
|
--- 128,133 ----
|
|||
|
*** ./src/include/access/hash.h.orig Wed Feb 13 22:43:06 2002
|
|||
|
--- ./src/include/access/hash.h Thu Feb 14 00:38:35 2002
|
|||
|
***************
|
|||
|
*** 265,271 ****
|
|||
|
extern Datum hashint2vector(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashname(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashvarlena(PG_FUNCTION_ARGS);
|
|||
|
! extern Datum hash_any(char *keydata, int keylen);
|
|||
|
|
|||
|
|
|||
|
/* private routines */
|
|||
|
--- 265,271 ----
|
|||
|
extern Datum hashint2vector(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashname(PG_FUNCTION_ARGS);
|
|||
|
extern Datum hashvarlena(PG_FUNCTION_ARGS);
|
|||
|
! extern Datum hash_any(const char *keydata, int keylen);
|
|||
|
|
|||
|
|
|||
|
/* private routines */
|
|||
|
|
|||
|
--huq684BweRXVnRxX
|
|||
|
Content-Type: text/plain
|
|||
|
Content-Disposition: inline
|
|||
|
Content-Transfer-Encoding: binary
|
|||
|
MIME-Version: 1.0
|
|||
|
|
|||
|
|
|||
|
---------------------------(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
|
|||
|
|
|||
|
--huq684BweRXVnRxX--
|
|||
|
|
|||
|
From pgsql-hackers-owner+M18833=candle.pha.pa.us=pgman@postgresql.org Thu Feb 14 16:22:34 2002
|
|||
|
Return-path: <pgsql-hackers-owner+M18833=candle.pha.pa.us=pgman@postgresql.org>
|
|||
|
Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
|
|||
|
by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g1ELMXP07956
|
|||
|
for <pgman@candle.pha.pa.us>; Thu, 14 Feb 2002 16:22:34 -0500 (EST)
|
|||
|
Received: (qmail 80517 invoked by alias); 14 Feb 2002 21:22:29 -0000
|
|||
|
Received: from unknown (HELO postgresql.org) (64.49.215.8)
|
|||
|
by www.postgresql.org with SMTP; 14 Feb 2002 21:22:29 -0000
|
|||
|
Received: from post.webmailer.de (natpost.webmailer.de [192.67.198.65])
|
|||
|
by postgresql.org (8.11.3/8.11.4) with ESMTP id g1EL2mE77720
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 16:02:48 -0500 (EST)
|
|||
|
(envelope-from barwick@gmx.net)
|
|||
|
Received: from there (pD9EB17D4.dip.t-dialin.net [217.235.23.212])
|
|||
|
by post.webmailer.de (8.9.3/8.8.7) with SMTP id WAA07320
|
|||
|
for <pgsql-hackers@postgresql.org>; Thu, 14 Feb 2002 22:02:49 +0100 (MET)
|
|||
|
Message-ID: <200202142102.WAA07320@post.webmailer.de>
|
|||
|
Content-Type: text/plain;
|
|||
|
charset="iso-2022-jp"
|
|||
|
From: Ian Barwick <barwick@gmx.net>
|
|||
|
To: "Hackers List" <pgsql-hackers@postgresql.org>
|
|||
|
Subject: Re: [HACKERS] NAMEDATALEN Changes
|
|||
|
Date: Thu, 14 Feb 2002 22:02:34 +0100
|
|||
|
X-Mailer: KMail [version 1.3.1]
|
|||
|
References: <003901c1b4ca$1d762500$8001a8c0@jester> <200202132227.XAA22201@post.webmailer.de>
|
|||
|
In-Reply-To: <200202132227.XAA22201@post.webmailer.de>
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
Precedence: bulk
|
|||
|
Sender: pgsql-hackers-owner@postgresql.org
|
|||
|
Status: OR
|
|||
|
|
|||
|
On Wednesday 13 February 2002 23:27, Ian Barwick wrote:
|
|||
|
> On Wednesday 13 February 2002 21:07, Rod Taylor wrote:
|
|||
|
> > NAMEDATALEN's benchmarked are 32, 64, 128 and 512. Attached is the
|
|||
|
> > shell script I used to do it.
|
|||
|
>
|
|||
|
> Attached is a modified version for Linux, if anyone is interested.
|
|||
|
>
|
|||
|
> Will run it overnight out of quasi-scientific interest.
|
|||
|
>
|
|||
|
> Nice to have an idea what kind of effect my very long NAMEDATALEN setting
|
|||
|
> (128) has.
|
|||
|
|
|||
|
Below the probably quite uninformative results, run under Linux with 2.2.16
|
|||
|
on an AMD K2 350Mhz with 256MB RAM, EIDE HDs and other run of the mill
|
|||
|
hardware.
|
|||
|
|
|||
|
I suspect some of the normal system jobs which usually run during the night
|
|||
|
caused the wildly varying results. Whatever else, for my purposes at least
|
|||
|
any performance issues with differening NAMEDATALENgths are nothing much
|
|||
|
to worry about.
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 32
|
|||
|
220.73 real 3.39 user 0.10 sys
|
|||
|
110.03 real 2.77 user 4.42 sys
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 64
|
|||
|
205.31 real 3.55 user 0.08 sys
|
|||
|
109.76 real 2.53 user 4.18 sys
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 128
|
|||
|
224.65 real 3.35 user 0.10 sys
|
|||
|
121.30 real 2.60 user 3.89 sys
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 256
|
|||
|
209.48 real 3.62 user 0.11 sys
|
|||
|
118.90 real 3.00 user 3.88 sys
|
|||
|
|
|||
|
|
|||
|
NAMEDATALEN: 512
|
|||
|
204.65 real 3.36 user 0.14 sys
|
|||
|
115.12 real 2.54 user 3.88 sys
|
|||
|
|
|||
|
|
|||
|
Ian Barwick
|
|||
|
|
|||
|
---------------------------(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
|
|||
|
|