X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id E629ED9B8D for ; Wed, 28 Sep 2005 23:29:33 -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 29944-04 for ; Thu, 29 Sep 2005 02:29:28 +0000 (GMT) Received: from xproxy.gmail.com (xproxy.gmail.com [66.249.82.204]) by svr1.postgresql.org (Postfix) with ESMTP id 6BDC8D9B8B for ; Wed, 28 Sep 2005 23:29:29 -0300 (ADT) Received: by xproxy.gmail.com with SMTP id i30so1578063wxd for ; Wed, 28 Sep 2005 19:29:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=gycJXw4xo9Uo9ai5eSyi3A7CmQUlOniRb6my7CgPe+BeF4SrCIooFmCJgoTlOUtjt/XSFpAkdWP4nUbrcCSVsZS0bkTkUg0Ezmx1wIKNSQkkF6SUTKHe6qQE4K0MW4yA5VmLETxpKbEKXh7dXB86vqA7BHlf18B/nwxJfUMU7o8= Received: by 10.70.74.5 with SMTP id w5mr281416wxa; Wed, 28 Sep 2005 19:29:34 -0700 (PDT) Received: by 10.70.75.4 with HTTP; Wed, 28 Sep 2005 19:29:34 -0700 (PDT) Message-ID: Date: Thu, 29 Sep 2005 07:59:34 +0530 From: Rajesh Kumar Mallah Reply-To: Rajesh Kumar Mallah To: Gavin Sherry Subject: Re: Slow concurrent update of same row in a given table Cc: pgsql-performance@postgresql.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.482 required=5 tests=[AWL=0.458, RCVD_BY_IP=0.024] X-Spam-Level: X-Archive-Number: 200509/401 X-Sequence-Number: 14709 On 9/29/05, Gavin Sherry wrote: > On Wed, 28 Sep 2005, Rajesh Kumar Mallah wrote: > > > > > Number of Copies | Update perl Sec > > > > > > > > 1 --> 119 > > > > 2 ---> 59 > > > > 3 ---> 38 > > > > 4 ---> 28 > > > > 5 --> 22 > > > > 6 --> 19 > > > > 7 --> 16 > > > > 8 --> 14 > > > > 9 --> 11 > > > > 10 --> 11 > > > > 11 --> 10 > > > > > > So, 11 instances result in 10 updated rows per second, database wide = or > > > per instance? If it is per instance, then 11 * 10 is close to the > > > performance for one connection. > > > > > > Sorry do not understand the difference between "database wide" > > and "per instance" > > Per instance. > > > > > > > > > That being said, when you've got 10 connections fighting over one row= , I > > > wouldn't be surprised if you had bad performance. > > > > > > Also, at 119 updates a second, you're more than doubling the table's > > > initial size (dead tuples) each second. How often are you vacuuming a= nd > > > are you using vacuum or vacuum full? > > > > > > Yes I realize the obvious phenomenon now, (and the uselessness of the s= cript) > > , we should not consider it a performance degradation. > > > > I am having performance issue in my live database thats why i tried to > > simulate the situation(may the the script was overstresser). > > > > My original problem is that i send 100 000s of emails carrying a > > beacon for tracking readership every tuesday and on wednesday i see > > lot of the said query in pg_stat_activity each of these query update > > the SAME row that corresponds to the dispatch of last day and it is > > then i face the performance problem. > > > > I think i can only post further details next wednesday , please lemme > > know how should i be dealing with the situation if each the updates tak= es > > 100times more time that normal update duration. > > I see. These problems regularly come up in database design. The best thin= g > you can do is modify your database design/application such that instead o= f > incrementing a count in a single row, you insert a row into a table, > recording the 'dispatch_id'. Counting the number of rows for a given > dispatch id will give you your count. > sorry i will be accumulating huge amount of rows in seperate table with no extra info when i really want just the count. Do you have a better database design in mind? Also i encounter same problem in implementing read count of articles in sites and in counting banner impressions where same row get updated by multiple processes frequently. Thanks & Regds mallah. > Thanks, > > Gavin >