Hi,

I have been told by Christian d'Heureuse to set the DB_CLOSE_DELAY
parameter to -1. I will try on monday.

LZ

On 17 Říj, 13:50, Lukas Zapletal <[EMAIL PROTECTED]> wrote:
> We have found the problem is in the org.h2.jdbcx.JdbcConnectionPool in
> this method:
>
>     private Connection getConnectionNow() throws SQLException {
>         if (isDisposed) {
>             throw new IllegalStateException("Connection pool has been
> disposed.");
>         }
>         PooledConnection pc;
>         if (!recycledConnections.empty()) {
>             pc = (PooledConnection) recycledConnections.pop();
>         } else {
>             pc = dataSource.getPooledConnection();
>         }
>         Connection conn = pc.getConnection(); // here
>         activeConnections++;
>         pc.addConnectionEventListener(poolConnectionEventListener);
>         return conn;
>     }
>
> It calls PooledConnection.getConnection() on every connection client
> request. The documentation of the Connection
> javax.sql.PooledConnection.getConnection() throws SQLException is:
>
> Creates and returns a Connection object that is a handle for the
> physical connection that this PooledConnection object represents. The
> connection pool manager calls this method when an application has
> called the method DataSource.getConnection and there are no
> PooledConnection objects available. See the interface description for
> more information. Returns: a Connection object that is a handle to
> this PooledConnection object Throws:
> SQLException - if a database access error occurs;
> SQLFeatureNotSupportedException - if the JDBC driver does not support
> this method.
>
> If I understand correctly this method should be called only if there
> are no other connections in the pool. The implementation from H2 (and
> the MiniConnectionPoolManager) calls this every time. Since the H2
> implementation of the org.h2.jdbcx.JdbcXAConnection.getConnection
> closes and reopens the connection its the cause of slowness -> every
> request to the connection pool = close/create connection. In embedded
> mode = close/open database files which is very slow.
>
> I just wanted to give you the results from my investigation - maybe
> you will be interested in (or maybe am I totally missing somehting).
> Thanks for H2/MiniConnectionPoolManager anyway - great pieces of
> software.
>
> LZ
>
> On 16 Říj, 14:32, Lukas Zapletal <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > I am reading from a one embedded table (one milion of records). I am
> > doing very intensive small reads (1-10 records) of all records.
>
> > When I am doing this in one connection I am done in 7 seconds.
>
> > When I use the JdbcConnectionPool (with one thread - one connection)
> > the very same thing is about 25 seconds.
>
> > This is very strange. I understand that using connection pool is a bit
> > slower than using one connection but three times? Since there is only
> > one thread and one connection in the pool there should not be any
> > blocking (waiting). Why am I getting these results?
>
> > Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
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