H2嵌入模式比服务器模式慢

时间:2015-12-04 21:41:03

标签: database h2 embedded-database

在尝试优化原型应用程序时,H2被确定为瓶颈。我最初在服务器模式下使用H2并且插入(和其他数据库操作)快速启动但随着行数(特别是DB文件大小)的增加而迅速变慢。奇怪的是,服务器模式下的H2启动速度较慢,但​​不会遭受相同的性能下降。

与服务器模式DB文件相比,嵌入式DB文件大小也快速增加。我尝试了各种数据库设置,并没有太大的区别。

为了说明这个问题,我创建了一个包容性的Spring Boot应用程序,并在https://github.com/balamuru/h2demo的github上托管它。我创建了一个简单的表,其中的MEDIUMBLOB字段由bitvector的内容填充(以加快扩展数据库的过程)

admin.employee (
  id      BIGINT       NOT NULL AUTO_INCREMENT,
  name    VARCHAR(100) NOT NULL,
  address TEXT,
  data MEDIUMBLOB,
  PRIMARY KEY (id)
);
  • 服务器模式db config
    spring.datasource.url=jdbc:h2:tcp://localhost/~/h2db;DB_CLOSE_ON_EXIT=FALSE;CACHE_SIZE=1000000;
  • 嵌入式模式db config spring.datasource.url=jdbc:h2:./h2db;DB_CLOSE_ON_EXIT=FALSE;CACHE_SIZE=1000000
  • 以下结果说明了我的担忧。有什么想法吗?

提前致谢

-------embedded mode (msecs)------- Run time : 27464 Run time : 7281 Run time : 6363 Run time : 6326 Run time : 5522 Run time : 6070 Run time : 5262 Run time : 6502 Run time : 6016 Run time : 7196 Run time : 15735 ==> spike in run time Run time : 39973 ==> embedded mode slower than server mode from this run onwards Run time : 44079 Run time : 46769 Run time : 50443 Run time : 53640 Run time : 59635 Run time : 61937 Run time : 64344 Run time : 71259 -------server mode (msecs)------- Run time : 20872 Run time : 17319 Run time : 18081 Run time : 18205 Run time : 18596 Run time : 18089 Run time : 18453 Run time : 18386 Run time : 18330 Run time : 17259 Run time : 18826 Run time : 19717 Run time : 19122 Run time : 18152 Run time : 18016 Run time : 18818 Run time : 19414 Run time : 19207 Run time : 19022 Run time : 19446

0 个答案:

没有答案