Bad update performance? - Mailing list pgsql-sql

From Gunnar Ingvi Thorisson
Subject Bad update performance?
Date
Msg-id 000001bed304$78193380$65dea8c0@gunni.gi.hf.is
Whole thread Raw
In response to bad select performance for where (x=1 or x=3)  (George Young <gry@ll.mit.edu>)
Responses Re: [SQL] Bad update performance?
Re: [SQL] Bad update performance?
List pgsql-sql
Hi there,

I´ve a table with about 142000 rows like shown below and I want to set field
"divis" to "unknown" by executing following update command:
update ipacct set divis = 'unknown';

However this seems to take hours, I´ve a PII 350MHz with 192Mb memory and
Quantum UIDE disk, is there a way for me to speed up the update process
except  for switching to a SCSI hard drive? Does indexing the field "divis"
speed up the update performance?

The load on the machine is about 1,5 to 2 all the time and it´s hacking on
the hard drive like hell.
I´ve the same problem when I do "UPDATE ipacct SET traf = (src+dst)", it
takes hours. Is this normal? Is there another way to do this?

However reading from the database doing select is very fast.

Many thanks in advance for any hint,
best regards,
Gunnar Ingvi Thorisson

CCIE 4826
Iceland
gunni@if.is



venus:~$ psql ipacct
Welcome to the POSTGRESQL interactive sql monitor:
  Please read the file COPYRIGHT for copyright terms of POSTGRESQL
[PostgreSQL 6.5.0 on i686-pc-linux-gnulibc1, compiled by gcc 2.7.2.3]

[cut]

ipacct=> select * from ipacct where id = 1;
id| datetime|pcol|saddr            |sport|daddr       |dport|pcnt| size|if
|login  |mac         |src|dst|traf|depart|divis
--+---------+----+-----------------+-----+------------+-----+----+-----+----
+-------+------------+---+---+----+------+-----
 1|928368167|   6|209.85.127.151/32|   80|10.10.2.3/32| 2448|
57|74856|eth0|unknown|00805FC1525C|100|  3| 103|      |
(1 row)

ipacct=> update ipacct set divis = 'unknown';

The table:
   ID               INT4  UNIQUE,
   DATETIME         TEXT,
   PCOL             INTEGER,
   SADDR            CIDR,
   SPORT            INTEGER,
   DADDR            CIDR,
   DPORT            INTEGER,
   PCNT             INT4
   SIZE             INT4;
   IF               TEXT;
   LOGIN            TEXT;
   MAC              TEXT;
   SRC              INTEGER;
   DST              INTEGER;
   TRAF             INTEGER;
   DEPART           TEXT;
   DIVIS            TEXT;




pgsql-sql by date:

Previous
From: "tjk@tksoft.com"
Date:
Subject: Re: [SQL] Can I prevent my sequence to increment if an insert is rejected?
Next
From: "GrooveRipper"
Date:
Subject: Tool for generating entity relation diagrams.