Re: INSERTs becoming slower and slower - Mailing list pgsql-performance

From Christopher Kings-Lynne
Subject Re: INSERTs becoming slower and slower
Date
Msg-id 4397F253.4030401@familyhealth.com.au
Whole thread Raw
In response to INSERTs becoming slower and slower  (Nörder-Tuitje, Marcus <noerder-tuitje@technology.de>)
Responses Re: INSERTs becoming slower and slower  (Matteo Beccati <php@beccati.com>)
List pgsql-performance
You might find it faster to install contrib/tsearch2 for text indexing
sort of purposes...

Nörder-Tuitje wrote:
>
>
> Hi,
>
> I am breaking up huge texts (between 25K and 250K words) into single
> words using PgPlsql.
>
> For this I am using a temp table in the first step :
>
>         LOOP
>
>                 vLeft   := vRight;
>                 vTmp    := vLeft;
>
>                 LOOP
>                         vChr := SUBSTRING ( pText FROM vTmp FOR 1);
>                         vTmp := vTmp + 1;
>                         EXIT WHEN (vChr = ' ' OR vChr IS NULL OR vTmp =
> cBorder);
>                 END LOOP;
>
>                 vRight  := vTmp;
>
>                 vLit    := SUBSTRING(pText FROM vLeft FOR (vRight -
> vLeft - 1));
>
>                 IF (LENGTH(vLit) > 0) THEN
>                         WRDCNT := WRDCNT +1;
>                         INSERT INTO DEX_TEMPDOC(TMP_DOO_ID
>                                                 ,       TMP_SEQ_ID
>                                                 ,       TMP_RAWTEXT)
>                         VALUES             (pDOO_ID
>                                                 ,       I
>                                                 ,       vLIT
>                                                     );
>                 END IF;
>
>                 I := I + 1;
>                 vTmp := LENGTH(vLIT);
>
>
>                 IF ((WRDCNT % 100) = 0) THEN
>                         PROGRESS = ROUND((100 * I) / DOCLEN,0);
>                         RAISE NOTICE '[PROC] % WORDS -- LAST LIT % (Len
> %) [% PCT / % of %]', WRDCNT, vLIT, vTMP, PROGRESS, I, DOCLEN;
>
>                 END IF;
>
>
>                 EXIT WHEN vRight >= cBorder;
>         END LOOP;
>
>
> The doc is preprocessed, between each word only a single blank can be.
>
> My problem is : The first 25K words are quite quick, but  the insert
> become slower and slower. starting with 1K words per sec I end up with
> 100 words in 10 sec (when I reach 80K-100K words)
>
> the only (nonunique index) on tempdoc is on RAWTEXT.
>
> What can I do ? Should I drop the index ?
>
> Here is my config:
>
> shared_buffers = 2000           # min 16, at least max_connections*2,
> 8KB each
> work_mem = 32768                # min 64, size in KB
> maintenance_work_mem = 16384    # min 1024, size in KB
> max_stack_depth = 8192          # min 100, size in KB
>
> enable_hashagg = true
> enable_hashjoin = true
> enable_indexscan = true
> enable_mergejoin = true
> enable_nestloop = true
> enable_seqscan = false
>
> The machine is a XEON 3GHz, 1GB RAM, SATA RAID 1 Array running 8.0.4
> i686 precompiled
>
>
> Thanks !
>
>
>
> Mit freundlichen Grüßen
> *Dipl.Inform.Marcus Noerder-Tuitje
> **Entwickler
> *
> software technology AG
> *Kortumstraße 16   *
> *44787 Bochum*
> *Tel:  0234 / 52 99 6 26*
> *Fax: 0234 / 52 99 6 22*
> *E-Mail:   noerder-tuitje@technology.de  *
> *Internet: www.technology.de *
>
>


pgsql-performance by date:

Previous
From: Nörder-Tuitje, Marcus
Date:
Subject: INSERTs becoming slower and slower
Next
From: Rory Campbell-Lange
Date:
Subject: Re: LVM and Postgres