Hi, I've got very slow insert performance on some table which has trigger based on complex PL/pgSQL function. Apparently insert is slow due some slow sql inside that function, since CPU load is very high and disk usage is low during insert. I run Red Hat 9 Anthlon 2.6 1GB ram Fast IDE Disk
Setting following in postgres.conf apparently doesn't help: log_statement = true log_duration = true since it logs only sql issued by client. It logs only once per session the sql text but during call to the PL/pgSQL function, but of course no duration. Due the complexity of PL/pgSQL function trying to step by step see the execution plans is very time consuming. Q1) Is there any way to see which statements are called for PL/pgSQL and their duration? I've tried to measure the duration of sql with printing out "localtimestamp" but for some reason during the same pg/plsql call it returns the same value: Example: Following gets and prints out the localtimestamp value in the loop create or replace function foobar() returns integer as ' declare v timestamp; begin loop select localtimestamp into v; raise notice ''Timestamp: %'', v; end loop; return null; end; ' language 'plpgsql' ; and as result of "select foobar();" i constantly get the same value: NOTICE: Timestamp: 2003-12-12 01:51:35.768053 NOTICE: Timestamp: 2003-12-12 01:51:35.768053 NOTICE: Timestamp: 2003-12-12 01:51:35.768053 NOTICE: Timestamp: 2003-12-12 01:51:35.768053 NOTICE: Timestamp: 2003-12-12 01:51:35.768053 Q2) what i do wrong here and what is the "Proper Way" to measure execution time of sql called inside PG/plSQL. Thanks in advance WBR -- Aram ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html