X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 7541F528A8 for ; Sun, 31 Jul 2005 12:52:37 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 96355-10 for ; Sun, 31 Jul 2005 15:52:29 +0000 (GMT) Received: from sccmmhc91.asp.att.net (sccmmhc91.asp.att.net [204.127.203.211]) by svr1.postgresql.org (Postfix) with ESMTP id 0EE8552838 for ; Sun, 31 Jul 2005 12:52:27 -0300 (ADT) Received: from juju.arbash-meinel.com ([12.214.18.81]) by sccmmhc91.asp.att.net (sccmmhc91) with ESMTP id <20050731155226m9100g5rcne>; Sun, 31 Jul 2005 15:52:26 +0000 Received: by juju.arbash-meinel.com (Postfix, from userid 505) id 8485055FFF; Sun, 31 Jul 2005 10:52:25 -0500 (CDT) Received: from [192.168.1.11] (liliana.arbash-meinel.com [192.168.1.11]) by juju.arbash-meinel.com (Postfix) with ESMTP id B990655F9F; Sun, 31 Jul 2005 10:52:18 -0500 (CDT) Message-ID: <42ECF3AE.6060809@arbash-meinel.com> Date: Sun, 31 Jul 2005 10:52:14 -0500 From: John Arbash Meinel User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050404) X-Accept-Language: en-us, en MIME-Version: 1.0 To: John Arbash Meinel Cc: Matthew Schumacher , pgsql-performance@postgresql.org Subject: Re: Performance problems testing with Spamassassin 3.1.0 References: <42E80C28.2040608@aptalaska.net> <1122532023.25574.1.camel@localhost.localdomain> <42E9749F.6000709@aptalaska.net> <1122616211.5691.340.camel@lamb.mcmillan.net.nz> <42EA6966.8090402@aptalaska.net> <1122668371.5691.352.camel@lamb.mcmillan.net.nz> <19405.1122670917@sss.pgh.pa.us> <42EAA410.9010700@aptalaska.net> <42EC612A.1080908@arbash-meinel.com> In-Reply-To: <42EC612A.1080908@arbash-meinel.com> X-Enigmail-Version: 0.92.0.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigE3AA658B8D7F7F80FBA76421" X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.046 tagged_above=0 required=5 tests=AWL, FORGED_RCVD_HELO X-Spam-Level: X-Archive-Number: 200507/502 X-Sequence-Number: 13743 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigE3AA658B8D7F7F80FBA76421 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit John Arbash Meinel wrote: >Matthew Schumacher wrote: > > > >>All it's doing is trying the update before the insert to get around the >>problem of not knowing which is needed. With only 2-3 of the queries >>implemented I'm already back to running about the same speed as the >>original SA proc that is going to ship with SA 3.1.0. >> >>All of the queries are using indexes so at this point I'm pretty >>convinced that the biggest problem is the sheer number of queries >>required to run this proc 200 times for each email (once for each token). >> >>I don't see anything that could be done to make this much faster on the >>postgres end, it's looking like the solution is going to involve cutting >>down the number of queries some how. >> >>One thing that is still very puzzling to me is why this runs so much >>slower when I put the data.sql in a transaction. Obviously transactions >>are acting different when you call a proc a zillion times vs an insert >>query. >> >> >> >> >Well, I played with adding a COMMIT;BEGIN; statement to your exact test >every 1000 lines. And this is what I got: > > Just for reference, I also tested this on my old server, which is a dual Celeron 450 with 256M ram. FC4 and Postgres 8.0.3 Unmodified: real 54m15.557s user 0m24.328s sys 0m14.200s With Transactions every 1000 selects, and vacuum every 5000: real 8m36.528s user 0m16.585s sys 0m12.569s With Transactions every 1000 selects, and vacuum every 10000: real 7m50.748s user 0m16.183s sys 0m12.489s On this machine vacuum is more expensive, since it doesn't have as much ram. Anyway, on this machine, I see approx 7x improvement. Which I think is probably going to satisfy your spamassassin needs. John =:-> PS> Looking forward to having a spamassassin that can utilize my favorite db. Right now, I'm not using a db backend because it wasn't worth setting up mysql. >Unmodified: >real 17m53.587s >user 0m6.204s >sys 0m3.556s > >With BEGIN/COMMIT: >real 1m53.466s >user 0m5.203s >sys 0m3.211s > >So I see the potential for improvement almost 10 fold by switching to >transactions. I played with the perl script (and re-implemented it in >python), and for the same data as the perl script, using COPY instead of >INSERT INTO means 5s instead of 33s. > >I also played around with adding VACUUM ANALYZE every 10 COMMITS, which >brings the speed to: > >real 1m41.258s >user 0m5.394s >sys 0m3.212s > >And doing VACUUM ANALYZE every 5 COMMITS makes it: >real 1m46.403s >user 0m5.597s >sys 0m3.244s > >I'm assuming the slowdown is because of the extra time spent vacuuming. >Overall performance might still be improving, since you wouldn't >actually be inserting all 100k rows at once. > > ... >This is all run on Ubuntu, with postgres 7.4.7, and a completely >unchanged postgresql.conf. (But the machine is a dual P4 2.4GHz, with >3GB of RAM). > >John >=:-> > > --------------enigE3AA658B8D7F7F80FBA76421 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFC7POyJdeBCYSNAAMRAiUjAJ9x+Q961uI0MY/Og+GK6ZgnAPsz7gCgmuuZ MpgRe2BiJP60c44Qcph6BRY= =mjjm -----END PGP SIGNATURE----- --------------enigE3AA658B8D7F7F80FBA76421--