Greetings!

I have run your test through all H2 versions and have not been able to
see any material performance deviation:

INFO: 1.3.176: 101681 ms
INFO: 1.4.196: 104554 ms
INFO: 1.4.197: 103474 ms
INFO: 1.4.198: 101421 ms
INFO: 1.4.199: 99655 ms
INFO: 1.4.200: 100125 ms
INFO: 2.0.201: 100645 ms
INFO: 2.0.202: 101761 ms
INFO: 2.0.204: 101122 ms
INFO: 2.0.206: 100877 ms
INFO: 2.1.210: 100627 ms
INFO: 2.1.212: 99316 ms
INFO: 2.1.214: 98967 ms
INFO: 2.2.220: 98540 ms
INFO: 2.2.222: 103886 ms
INFO: 2.2.229: 103005 ms

Those are very rough estimates based
on System.currentTimeMillis() without engaging the JMH benachmarking
tool.
I am still working on a generic Performance Test Framework, which can
read simply Test Case Scripts like the one attached.

In the meantime, please elaborate on your concern since I can't really
confirm it so far.

Best regards
Andreas

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/h2-database/0b297f12b1eb881db8d30910d60742c79dec69cd.camel%40manticore-projects.com.
def String[] sqlStr = [
    "CREATE TABLE IF NOT EXISTS A (number VARCHAR(128) not NULL, intent INT not NULL, objID VARCHAR(30) not NULL, objType SMALLINT  not NULL, PRIMARY KEY (number,intent,objID,objType));",
    "CREATE INDEX IF NOT EXISTS A_IDX ON A(objType,objID,intent);",
    "CREATE INDEX IF NOT EXISTS A_type_IDX ON A (objType);",
    "DROP TABLE IF EXISTS B; ",
    "CREATE TABLE IF NOT EXISTS B (number VARCHAR(128) not NULL, intent INT not NULL, objID VARCHAR(30) not NULL, objType SMALLINT  not NULL, PRIMARY KEY (number,intent,objID,objType));",
    "CREATE INDEX IF NOT EXISTS B_IDX ON B(objType,objID,intent);",
    "DELETE FROM A T WHERE EXISTS (SELECT NULL from A S WHERE T.objID=S.objID AND T.objType=S.objType AND T.intent=S.intent AND T.number<>S.number);",
    "MERGE INTO A T USING (SELECT * FROM B) AS S ON T.objID=S.objID AND T.objType=S.objType AND T.intent=S.intent AND T.number=S.number WHEN NOT MATCHED THEN INSERT (objID, objType, number, intent) VALUES (S.objID, S.objType, S.number, S.intent);",
    "DROP TABLE B CASCADE"
]

statement.execute(sqlStr[0]);
statement.execute(sqlStr[1]);
statement.execute(sqlStr[2]);

for (int loop = 0, number = 0; loop < 300; ++loop) {
    statement.execute(sqlStr[3]);
    statement.execute(sqlStr[4]);
    statement.execute(sqlStr[5]);

    for (int i = 0; i < 100; ++i) {
        ++number;
        statement.execute("MERGE INTO B (number,intent,objID,objType) VALUES ('"
                + number
                + "',1, '"
                + number
                + "', 1);");
    }
    statement.execute(sqlStr[6]);
    statement.execute(sqlStr[7]);
    statement.execute(sqlStr[8]);

    logger.info "loop = $loop"
}

Reply via email to