X-Original-To: pgsql-interfaces-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 6538F3A44E9 for ; Thu, 11 Nov 2004 17:01:04 +0000 (GMT) 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 32159-07 for ; Thu, 11 Nov 2004 17:00:56 +0000 (GMT) Received: from web53501.mail.yahoo.com (web53501.mail.yahoo.com [206.190.37.62]) by svr1.postgresql.org (Postfix) with SMTP id 7B3B13A44E6 for ; Thu, 11 Nov 2004 17:00:53 +0000 (GMT) Received: (qmail 75743 invoked by uid 60001); 11 Nov 2004 17:00:51 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; b=bx1blPG20YItcNyCIwSnPmQogxuEKWJyNcZcS/QpgSPi0o5Oe4LcsLIRiNKACrN850sw80N8uUuht82wb5loUvK54vKwViy61CJk46efS/HIYhs+Z4TDNCS0xQux1uXUY9OI08nGj2HCCIuxaqs8d5IWLK9vKi9ZZpvQfhSCGns= ; Message-ID: <20041111170050.75735.qmail@web53501.mail.yahoo.com> Received: from [209.87.238.132] by web53501.mail.yahoo.com via HTTP; Thu, 11 Nov 2004 09:00:50 PST Date: Thu, 11 Nov 2004 09:00:50 -0800 (PST) From: jing han Subject: about libpq-C FETCH performance issue To: pgsql-interfaces@postgresql.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=3.0 tagged_above=0.0 required=5.0 tests=FROM_ENDS_IN_NUMS, FROM_HAS_ULINE_NUMS X-Spam-Level: *** X-Archive-Number: 200411/26 X-Sequence-Number: 5152 Hello, I'm working on a project where libpq-C is envolved. We have several background processes keep querying certain data from database to send out ip packets at fast rate. With libpq-C interface, I use res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from ourTables"); and then res = PQexec(conn, "FETCH ALL in myportal"); to get the data. I found when our database has more and more data, res = PQexec(conn, "FETCH ALL in myportal"); cost more and more time, much more than res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from ourTables"); (note:ourTables can be several tables join together) and make our sending packet rate extremely low. We get into big problems here. Then I try FETCH 1 instead of FETCH ALL, no improvement. All the queries our background processes use was optimized with EXPLAIN utility, these queries take much shorter time in postgres console. So I wonder what FETCH statement is doing: just fetch query results from cursor or do the real query, get the query result and give these results to us. Why it is much slower than console sql command? I wonder if there is other faster way ( I mean other than FETCH ALL command) to get data from database with libpq-C, or If you have a patch to make FETCH work faster? Hope to hear from you soon. Best Regards jing __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com