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 00AD7D95A9 for ; Sun, 25 Sep 2005 16:10:34 -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 07329-04 for ; Sun, 25 Sep 2005 19:10:28 +0000 (GMT) Received: from ki-communication.com (unknown [202.147.194.21]) by svr1.postgresql.org (Postfix) with ESMTP id A38B5D76BA for ; Sun, 25 Sep 2005 16:10:27 -0300 (ADT) Received: from iacn01wks ([192.168.0.128]) by ki-communication.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 26 Sep 2005 02:14:50 +0700 From: "Ahmad Fajar" To: "'Oleg Bartunov'" Cc: Subject: Re: tsearch2 seem very slow Date: Mon, 26 Sep 2005 02:14:38 +0700 Keywords: Postgresql MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook, Build 11.0.6353 In-Reply-To: Thread-Index: AcXB/4OudUZ5HDloQ+eQJFZPZjge7QAAnprA X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Message-ID: X-OriginalArrivalTime: 25 Sep 2005 19:14:50.0062 (UTC) FILETIME=[668626E0:01C5C205] X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.387 required=5 tests=[AWL=-0.105, DNS_FROM_RFC_WHOIS=0.492] X-Spam-Level: X-Archive-Number: 200509/345 X-Sequence-Number: 14653 Hi Oleg, > what king of garbage ? Probably you index not needed token types, for > example, email address, file names.... > do you need proximity ? If no, use strip(tsvector) function to remove > coordinate information from tsvector. I need proximity. Some time I have to rank my article and make a chart for that. > don't index default configuration and index only needed tokens, for > example, to index only 3 type of tokens, first create 'qq' configuration > and specify tokens to index. > insert into pg_ts_cfg values('qq','default','en_US'); -- tokens to index > insert into pg_ts_cfgmap values('qq','lhword','{en_ispell,en_stem}'); > insert into pg_ts_cfgmap values('qq','lword','{en_ispell,en_stem}'); > insert into pg_ts_cfgmap values('qq','lpart_hword','{en_ispell,en_stem}'); I still don't understand about tsearch2 configuration, so until now I just use default configuration. I will try your suggestion. But how can I get the en_ispell? Does my system will know if I use: ....,'{en_ispell,en_stem}'; From default configuration I only see: ..., '{en_stem}'; > Beside that, I still have problem, if I do a simple query like: > Select ids, keywords from dict where keywords='blabla' ('blabla' is a single > word); The table have 200 million rows, I have index the keywords field. On > the first time my query seem to slow to get the result, about 15-60 sec to > get the result. I use latest pgAdmin3 to test all queries. But if I repeat > the query I will get fast result. My question is why on the first time the > query seem to slow. > because index pages should be readed from disk into shared buffers, so > next query will benefit from that. You need enough shared memory to get > real benefit. You may get postgresql stats and look on cache hit ration. > btw, how does your query ( keywords='blabla') relates to tsearch2 ? (Keywords='blabla') isn't related to tsearch2, I just got an idea from tsearch2 and try different approach. But I stuck on the query result speed. Very slow to get result on the first query. And how to see postgresql stats and look on cache hit ratio? I still don't know how to get it. > I try to cluster the table base on keyword index, but after 15 hours > waiting and it doesn't finish I stop clustering. > don't use cluster for big tables ! simple > select * into clustered_foo from foo order by indexed_field > would be faster and does the same job. What the use of clustered_foo table? And how to use it? I think it will not distinct duplicate rows. And the clustered_foo table still not have an index, so if query to this table, I think the query will be very slow to get a result. Regards, ahmad fajar