Обсуждение: SRFs ... no performance penalty?
Folks, I'm working on the demo session for our upcoming presentation at PHPCon. As a side issue, we ended up comparing 3 versions of the same search screen: 1) All in PHP with views; 2) Using a function to build a query and count results but executing that query directly and sorting, paging in PHP; 3) Using a Set Returning function to handle row-returning, sorting, and paging. All three methods were executing a series moderately complex query against a medium-sized data set (only about 20,000 rows but it's on a laptop). The postgresql.conf was tuned like a webserver; e.g. low sort_mem, high max_connections. So far, on the average of several searches, we have: 1) 0.19687 seconds 2) 0.20667 seconds 3) 0.20594 seconds In our tests, using any kind of PL/pgSQL function seems to carry a 0.01 second penalty over using PHP to build the search query. I'm not sure if this is comparitive time for string-parsing or something else; the 0.01 seems to be consistent regardless of scale. The difference between using a PL/pgSQL function as a query-builder only (the 7.2.x method) and using SRFs was small enough not to be significant. -- -Josh Berkus Aglio Database Solutions San Francisco
On Mon, 2003-10-20 at 20:55, Josh Berkus wrote:
> Folks,
>
> I'm working on the demo session for our upcoming presentation at PHPCon.
>
> As a side issue, we ended up comparing 3 versions of the same search screen:
>
> 1) All in PHP with views;
> 2) Using a function to build a query and count results but executing that
> query directly and sorting, paging in PHP;
> 3) Using a Set Returning function to handle row-returning, sorting, and
> paging.
>
> All three methods were executing a series moderately complex query against a
> medium-sized data set (only about 20,000 rows but it's on a laptop). The
> postgresql.conf was tuned like a webserver; e.g. low sort_mem, high
> max_connections.
>
> So far, on the average of several searches, we have:
>
> 1) 0.19687 seconds
> 2) 0.20667 seconds
> 3) 0.20594 seconds
>
Is this measuring time in the back-end or total time of script
execution?
> In our tests, using any kind of PL/pgSQL function seems to carry a 0.01 second
> penalty over using PHP to build the search query. I'm not sure if this is
> comparitive time for string-parsing or something else; the 0.01 seems to be
> consistent regardless of scale.
>
> The difference between using a PL/pgSQL function as a query-builder only (the
> 7.2.x method) and using SRFs was small enough not to be significant.
>
> --
> -Josh Berkus
> Aglio Database Solutions
> San Francisco
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
Robert Treat
--
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Robert, > > 1) 0.19687 seconds > > 2) 0.20667 seconds > > 3) 0.20594 seconds > > Is this measuring time in the back-end or total time of script > execution? Total time of execution, e.g. from clicking the "enter" button to displaying the list of matches. Any other comparison would be misleading. -- Josh Berkus Aglio Database Solutions San Francisco