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 h2-database+unsubscr...@googlegroups.com.
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"
}