Iam running transactional test based on TPCC with HSQL, Derby, SQLite and H2 embedded databases. Each database is running in memory mode with default configuration. Every test has exactly same initial database performing exactly same transactions. With HSQL i have got better results with bigger initial database than in small one. here is the output:
SQLite
initial db rows: 279606 number of transactions: 272270
initial db rows: 398870 number of transactions: 142080
initial db rows: 598867 number of transactions: 79170
HSQL
initial db rows: 279606 number of transactions: 226660
initial db rows: 398870 number of transactions: 220650
initial db rows: 598867 number of transactions: 288360
H2
initial db rows: 279606 number of transactions: 158280
initial db rows: 398870 number of transactions: 136810
initial db rows: 598867 number of transactions: 115720
Derby
initial db rows: 279606 number of transactions: 8920
initial db rows: 398870 number of transactions: 8650
initial db rows: 598867 number of transactions: 7990
here are minute by minute numbers of executed transactions with HSQL:
min/rows    279606   398870   598867 
1:          34530    31620    24590
2:          33010    30900    27770
3:          26490    26380    30190
4:          24180    24520    30370
5:          21540    20370    29220
6:          17690    20570    29090
7:          18620    17250    30310
8:          17950    17290    31070
9:          16920    17080    25580
10:         15730    14670    30170
Any idea why the smaller database get so slower while the biggest one gives better and stable results?
If it would be the same for other dbms i would expected some mistake in my test application but this is really strange.