Hi,

Thanks a lot for your help! Sorry I made a mistake, FileDescriptor.sync is
currently still called even when using MV_STORE=true, because the old page
store file is still used at the moment. It is not needed, I will need to
fix that.

I will try to test and analyze this myself on the Raspberry Pi. I think
opening a database should take less than 1 second.

As a last test, could you run the following please and post the result?

    public static void main(String[] args) throws Exception {
    System.setProperty("h2.syncMethod", "");
    long time;
    String url = "jdbc:h2:~/test123;MV_STORE=true;FILE_LOCK=NO";
    for (int i = 0; i < 50; i++) {
        time = System.currentTimeMillis();
        Connection conn = DriverManager.getConnection(url, "sa", "sa");
        time = System.currentTimeMillis() - time;
        System.out.println("open: " + time);
        time = System.currentTimeMillis();
        conn.close();
        time = System.currentTimeMillis() - time;
        System.out.println("close: " + time);
    }
    }

The System.setProperty would need to be the first statement in the program,
before the H2 classes are loaded. Maybe better also use "java
-Dh2.syncMethod= -cp ... <TestClassName>" (notice the space after the "=").

Regards,
Thomas



On Tuesday, January 7, 2014, Famco wrote:

> Hi Thomas,
>
> below you find the profile log you requested.
>
> Peter
>
>
> Profiler: top 5 stack trace(s) of 13379 ms:
>> 120/1383 (8%):
>> at java.io.FileDescriptor.sync(Native Method)
>> at org.h2.store.fs.FileDisk.force(FilePathDisk.java:406)
>> at org.h2.store.FileStore.sync(FileStore.java:403)
>> at org.h2.store.PageStore.writeVariableHeader(PageStore.java:950)
>> at org.h2.store.PageStore.setLogFirstPage(PageStore.java:944)
>> at org.h2.store.PageLog.openForWriting(PageLog.java:187)
>> at org.h2.store.PageStore.openNew(PageStore.java:308)
>> at org.h2.store.PageStore.open(PageStore.java:288)
>> at org.h2.engine.Database.getPageStore(Database.java:2277)
>> at org.h2.engine.Database.open(Database.java:610)
>> at org.h2.engine.Database.openDatabase(Database.java:236)
>> at org.h2.engine.Database.<init>(Database.java:231)
>> at org.h2.engine.Engine.openSession(Engine.java:56)
>> at org.h2.engine.Engine.openSession(Engine.java:160)
>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
>> at org.h2.engine.Engine.createSession(Engine.java:122)
>> at org.h2.engine.Engine.createSession(Engine.java:28)
>> at
>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
>> at org.h2.Driver.connect(Driver.java:73)
>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>> at java.sql.DriverManager.getConnection(DriverManager.java:215)
>> at dbmanager.DatabaseManager.getNewConnection(DatabaseManager.java:55)
>> at dbmanager.DatabaseManager.checkDb(DatabaseManager.java:68)
>> at jac.JACstart.main(JACstart.java:45)
>> 76/1383 (5%):
>> at sun.security.provider.SHA.implDigest(SHA.java:101)
>> at sun.security.provider.DigestBase.engineDigest(DigestBase.java:186)
>> at sun.security.provider.DigestBase.engineDigest(DigestBase.java:165)
>> at
>> java.security.MessageDigest$Delegate.engineDigest(MessageDigest.java:576)
>> at java.security.MessageDigest.digest(MessageDigest.java:353)
>> at java.security.MessageDigest.digest(MessageDigest.java:399)
>> at sun.security.provider.SecureRandom.engineSetSeed(SecureRandom.java:142)
>> at java.security.SecureRandom.setSeed(SecureRandom.java:415)
>> at org.h2.util.MathUtils$1.run(MathUtils.java:86)
>> at java.lang.Thread.run(Thread.java:724)
>> 37/1383 (2%):
>> at java.io.FileDescriptor.sync(Native Method)
>> at org.h2.store.fs.FileDisk.force(FilePathDisk.java:406)
>> at org.h2.store.FileStore.sync(FileStore.java:403)
>> at org.h2.store.PageStore.writeVariableHeader(PageStore.java:950)
>> at org.h2.store.PageStore.openNew(PageStore.java:303)
>> at org.h2.store.PageStore.open(PageStore.java:288)
>> at org.h2.engine.Database.getPageStore(Database.java:2277)
>> at org.h2.engine.Database.open(Database.java:610)
>> at org.h2.engine.Database.openDatabase(Database.java:236)
>> at org.h2.engine.Database.<init>(Database.java:231)
>> at org.h2.engine.Engine.openSession(Engine.java:56)
>> at org.h2.engine.Engine.openSession(Engine.java:160)
>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
>> at org.h2.engine.Engine.createSession(Engine.java:122)
>> at org.h2.engine.Engine.createSession(Engine.java:28)
>> at
>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
>> at org.h2.Driver.connect(Driver.java:73)
>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>> at java.sql.DriverManager.getConnection(DriverManager.java:215)
>> at dbmanager.DatabaseManager.getNewConnection(DatabaseManager.java:55)
>> at dbmanager.DatabaseManager.checkDb(DatabaseManager.java:68)
>> at jac.JACstart.main(JACstart.java:45)
>> 33/1383 (2%):
>> at java.lang.ClassLoader.findBootstrapClass(Native Method)
>> at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1062)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:413)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at org.h2.store.LobStorageBackend.<init>(LobStorageBackend.java:101)
>> at org.h2.engine.Database.getLobStorage(Database.java:2486)
>> at org.h2.engine.Database.open(Database.java:697)
>> at org.h2.engine.Database.openDatabase(Database.java:236)
>> at org.h2.engine.Database.<init>(Database.java:231)
>> at org.h2.engine.Engine.openSession(Engine.java:56)
>> at org.h2.engine.Engine.openSession(Engine.java:160)
>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
>> at org.h2.engine.Engine.createSession(Engine.java:122)
>> at org.h2.engine.Engine.createSession(Engine.java:28)
>> at
>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
>> at org.h2.Driver.connect(Driver.java:73)
>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>> at java.sql.DriverManager.getConnection(DriverManager.java:215)
>> at dbmanager.DatabaseManager.getNewConnection(DatabaseManager.java:55)
>> at dbmanager.DatabaseManager.checkDb(DatabaseManager.java:68)
>> at jac.JACstart.main(JACstart.java:45)
>> 24/1383 (1%):
>> at java.lang.ClassLoader.defineClass1(Native Method)
>> at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
>> at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
>> at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at org.h2.engine.DbObjectBase.getSQL(DbObjectBase.java:102)
>> at org.h2.schema.SchemaObjectBase.getSQL(SchemaObjectBase.java:38)
>> at org.h2.index.BaseIndex.getCreateSQL(BaseIndex.java:363)
>> at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:448)
>> at org.h2.engine.Database.open(Database.java:657)
>> at org.h2.engine.Database.openDatabase(Database.java:236)
>> at org.h2.engine.Database.<init>(Database.java:231)
>> at org.h2.engine.Engine.openSession(Engine.java:56)
>> at org.h2.engine.Engine.openSession(Engine.java:160)
>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
>> at org.h2.engine.Engine.createSession(Engine.java:122)
>> at org.h2.engine.Engine.createSession(Engine.java:28)
>> at
>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
>> at org.h2.Driver.connect(Driver.java:73)
>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>> at java.sql.DriverManager.getConnection(DriverManager.java:215)
>> at dbmanager.DatabaseManager.getNewConnection(DatabaseManager.java:55)
>> at dbmanager.DatabaseManager.checkDb(DatabaseManager.java:68)
>> at jac.JACstart.main(JACstart.java:45)
>> 24/1383 (1%):
>> at java.util.zip.ZipFile.read(Native Method)
>> at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
>> at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
>> at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
>> at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
>> at sun.misc.Resource.getBytes(Resource.java:124)
>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:444)
>> at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at org.h2.engine.Database.getPageStore(Database.java:2266)
>> at org.h2.engine.Database.open(Database.java:610)
>> at org.h2.engine.Database.openDatabase(Database.java:236)
>> at org.h2.engine.Database.<init>(Database.java:231)
>> at org.h2.engine.Engine.openSession(Engine.java:56)
>> at org.h2.engine.Engine.openSession(Engine.java:160)
>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
>> at org.h2.engine.Engine.createSession(Engine.java:122)
>> at org.h2.engine.Engine.createSession(Engine.java:28)
>> at
>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
>> at org.h2.Driver.connect(Driver.java:73)
>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>> at java.sql.DriverManager.getConnection(DriverManager.java:215)
>> at dbmanager.DatabaseManager.getNewConnection(DatabaseManager.java:55)
>> at dbmanager.DatabaseManager.checkDb(DatabaseManager.java:68)
>> at jac.JACstart.main(JACstart.java:45)
>> summary:
>> 23%: org.h2.engine
>> 18%: org.h2.store.fs
>> 17%: org.h2.util
>> 11%: org.h2.store
>> 5%: org.h2.mvstore.db
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:_e({},
> 'cvml', 'h2-database%[email protected]');>.
> To post to this group, send email to 
> [email protected]<javascript:_e({}, 'cvml', 
> '[email protected]');>
> .
> Visit this group at http://groups.google.com/group/h2-database.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to