libpq single-row mode performance - Mailing list pgsql-interfaces

From James Duong
Subject libpq single-row mode performance
Date
Msg-id 59b2f266559a4a46835d2add16d80c39@DM2PR04MB589.namprd04.prod.outlook.com
Whole thread Raw
Responses Re: libpq single-row mode performance
List pgsql-interfaces

Hi,

 

I’m writing an app on top of libpq. To avoid running out of memory I’m using the single-row mode, but am finding the overhead in using this quite significant.

 

What I see is that ~60% of my application’s run time when retrieving data is spent in calls to either PQgetResult() and PQclear(). I’ve added a switch in my app to turn off single-row mode and the performance roughly doubles.

 

Would it be possible to optimize the single-row mode? For example, add an API call PQnextRow(PGConn*), which is only usable in single-row mode and will just update the existing result with the contents of the next row? This would let us avoid to overhead of:

1.       Malloc’ing a PGResult and initializing its defaults.

2.       Copying the column metadata to the new results.

3.       Possibly we can avoid malloc’ing cell data if the next row has cells the same size or smaller than a previous row, though I’m not sure of the internals here.

4.       Release memory with PQclear().

 

James Duong | Senior Computer Scientist | Simba Technologies Inc.

Tel +1.604.633.0008 ext. 120 | Fax +1.604.633.0004 | jamesd@simba.com

 

938 West 8th Avenue | Vancouver, BC | Canada | V5Z 1E5

The Data Access and Analytics Experts  |  www.simba.com

 

Description: Description: Description: Description: twitter  Description: Description: Description: Description: youtube  Description: Description: Description: Description: linkedin  Description: Description: Description: Description: facebook  Description: Description: Description: Description: google-plus  Description: Description: Description: Description: typepad

 

This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information.  Any unauthorized review, use, disclosure, or distribution is prohibited.  If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.  Thank you.

 

pgsql-interfaces by date:

Previous
From: James Duong
Date:
Subject: libpq batched parameterized query execution
Next
From: Pavel Golub
Date:
Subject: Re: libpq single-row mode performance