When examining the trace of an application that I am building using Hibernate 
4.1 and H2 1.3.168 I noticed that SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS 
WHERE NAME = 'QUERY_TIMEOUT' was taking up quite a bit of my overall execution 
time:


--  69%  69%    4558    3972   14982 select spilledsna0_.sequentialId as 
sequenti1_2_, spilledsna0_.entityId as entityId2_, spilledsna0_.snapshot as 
snapshot2_ from SpilledSnapshot spilledsna0_ where spilledsna0_.sequentialId in 
(select spilledsna1_.entitySequentialId from SpilledSnapshotInBlock 
spilledsna1_ where spilledsna1_.blockId=?);
--  19%  89%    1284   23954   23954 SELECT VALUE FROM 
INFORMATION_SCHEMA.SETTINGS WHERE NAME=?;
--   6%  96%     436   14982   14982 insert into SpilledSnapshotInBlock 
(entitySequentialId, blockId) values (?, ?);


After doing a little digging I noticed that when hibernate closes 
PreparedStatements or Statements it calls:

if (stmt.getQueryTimeout() != 0) stmt.setQueryTimeout(0)

H2 delegates this getQueryTimeout to JdbcConnection.getQueryTimeout() which 
issues this INFORMATION_SCHEMA query.

I think its reasonable for hibernate to issue such queries, but not sure that 
it makes sense to always go back to the information schema metadata -- I mean 
how frequently is this really changing?

To see what kind of difference it made for me, I subclassed org.h2.Driver, then 
overrode the connect method to return a cglib proxied JdbcConnection that 
returned back the fixed value of 0 for getQueryTimeout (because I never use 
query timeouts in my app).

This reduced my total execution time by 24%, which is not too bad for something 
simple like this.  

Not sure if this is "working as designed", but figured that it might be of 
interest to the group.

Steve

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/h2-database/-/rz_OaH7KlxEJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to