Hi all. I see an entire database, with all the stored procedures writen in plpgsql. Off course, many (if not all) of that SP are simple inserts, updates, selects and so on.
So, i want to test and show the differences between doing the same function in pgpgsql vs. plain sql. Im getting statistics (via collectd if that matters) and doing a modified version of the pgbench tests, just using pl (and sql) functions instead of the plain query:
At first, pgbench is showing a difference between the "pl" and de "sql" versions:
(pl.scripts own the "PL" version, sql.script owns the "SQL" version of the test) (This is a tiny netbook, with a dual core procesor)
gherzig@via:~> pgbench -c 2 -C -T 300 -f pl.script -U postgres test duration: 300 s number of transactions actually processed: 13524 tps = 45.074960 (including connections establishing) tps = 75.260741 (excluding connections establishing)
gherzig@via:~> pgbench -c 2 -C -T 300 -f sql.script -U postgres test starting vacuum...end. duration: 300 s number of transactions actually processed: 15125 tps = 50.412852 (including connections establishing) tps = 92.058245 (excluding connections establishing)
So yeah, it looks like the "SQL" version is able to do a 10% more transactions. However, i was hoping to see anothers "efects" of using sql (perhaps less load avg in the SQL version), at the OS level.
So, finnaly, the actual question: ¿Wich signals should i monitor, in order to show that PGPLSQL uses more resources than SQL?
It is hard question. It is invisible feature of SQL proc - inlining. What I know, a SQL function is faster than PLpgSQL function, when it is inlined. But there is nothing visible metric, that inform you about inlining.