Hi I have a strange problem with the number of transactions
generated within my application. I use jdbc batching to submit insert
statements from a jboss app server to postgres 8.1.2. A batch can have from 100 to 3000 inserts. I noticed the following: When I run the following query select current_timestamp,datname,age(datfrozenxid) from
pg_database; The age columns shows say 1,500,000,000 When I run the same query after say 10 minutes, it shows 1,500,600,000 I have issued about 40,000 inserts via jdbc batching in 10
minutes. It appears that the jdbc driver is generating twice the
number of transactions as inserts. This behaviour appears consistent with the
number of inserts that I generate The target table has triggers that route data to appropriate
tables. The tables to which data is routed has check constraints that do
further inserts. (All of this happens in 1 jdbc transaction) I expect JDBC Batching to generate fewer transactions
depending on batch size. The mystery is why am I seeing double the number of
transactions being generated. This is causing transaction id wraparound limits to be
approached quicker than I would like. |