Search Postgresql Archives

Re: ltree + gist index performance degrades

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2006-02-24 at 11:02, CG wrote:
> PostgreSQL 8.1.3
> 
> I'm trying to collect some hard numbers to show just how much it degrades and
> over how long a time interval.
> 
> All I have now is anecdotal evidence, and I was hoping to save myself some
> downtime by seeking advice early.
> 
> I have a search table which I use for partial-match text searches:
> 
> CREATE TABLE search
> (
>   id int4 NOT NULL DEFAULT nextval('search_id_seq'::regclass),
>   item_id int8 NOT NULL,
>   search_vector ltree NOT NULL,
>   CONSTRAINT search_id_pkey PRIMARY KEY (id),
>   CONSTRAINT search_item_id_fkey FOREIGN KEY (item_id)
>       REFERENCES items (id) MATCH SIMPLE
>       ON UPDATE CASCADE ON DELETE CASCADE
> ) 
> WITH OIDS;
> 
> CREATE INDEX lsearch_vector_idx
>   ON search
>   USING gist
>   (search_vector);
> 
> I have some triggers that insert rows into the search table as rows are
> inserted into "items".
> 
> I implimented this yesterday, and the immediate effect was a fantastic return
> time for partial text searches in the sub-second range. By today, these queries
> take 10 minutes sometimes... There are about 134000 rows in the table.
> 
> The table gets analyzed nightly. Should the frequency be more? There are about
> 1000 rows added a day, only about 30 or so rows removed, and nothing is ever
> updated. There's not that much turnover.
> 
> The search vectors are built like this:
> 
> For a string "Hello World" the ltree is created like 'h.e.l.l.o.w.o.r.l.d' ...
> If I wanted to find all rows with "orl" in them i would construct an lquery
> like '*.o.r.l.*' and use the "~" operator in the where clause. I would link to
> the table "items" by the item_id ... 
> 
> What could be making this go so wrong? Is there a better way to accomplish my
> task?

Are you vacuuming regularly, are your fsm settings high enough, and what
does vacuum verbose say?


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux