about libpq-C FETCH performance issue
От | jing han |
---|---|
Тема | about libpq-C FETCH performance issue |
Дата | |
Msg-id | 20041111170050.75735.qmail@web53501.mail.yahoo.com обсуждение исходный текст |
Список | pgsql-interfaces |
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
В списке pgsql-interfaces по дате отправления: