hsqldb mysql_HSQLDB的研究与性能测试(与Mysql对比)

HSQLDB 的研究与性能测试(与Mysql对比) 1. HSQLDB 简介 HSQLDB 数据库是一款纯 Java 编写的免费数据库,许可是 BSD-style 的协议。相对其他数据库来说,其体积小,才 563kb 。仅一个 hsqldb.jar 文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作

HSQLDB的研究与性能测试(与Mysql对比)

1.HSQLDB简介

HSQLDB数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议。相对其他数据库来说,其体积小,才563kb。仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。在Java开源世界里,hsql是极为受欢迎的(就Java本身来说),JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因,又是纯Java设计,又支持SQL99,SQL2003大部分的标准,所以也是作为商业应用程序展示的一种选择。

2.HSQLDB的工作模式:

1)In-Process(Standalone)模式

主要是在一个JVM中使用,不能通过网络来访问数据库,数据存储格式为文本文件。

2)Memory-Only单机模式

主要是在一个JVM中使用,不能通过网络来访问数据库,只存储在内存中。

3)Memory-Only网络模式(本机访问)

数据存储在内存中,支持本地访问和网络访问,可应用于多个JVM间进行数据交换。

4)Server模式(本机访问)

类似我们常用的Mysql、oracle等数据库,支持本地访问和网络访问,数据存储格式为文本文件。

5)WebServer模式

和Server运行模式基本一样,只是支持了Http等协议,主要用于防火墙,其余的和Server模式完全一致。

3.测试的SQL语句:

6)CREATE

CREATE TABLE T0(NO INTEGER,a CHAR(20),b CHAR(20),c CHAR(20),d CHAR(20),e CHAR(20),f CHAR(20),g CHAR(20),h

CHAR(20),i CHAR(20),j CHAR(20),k CHAR(20),l CHAR(20),m CHAR(20),n CHAR(20),o CHAR(20),p CHAR(20),q CHAR(20),r CHAR(20),s CHAR(20),t CHAR(20));

7)INSERT

INSERT INTO T0 VALUES (0,'00','01','02','03','04','05','06','07','08','09','010','011','012','013','014','015','016','017','018','019');

8)SELECT

select * from T0;

9)SELECT.all

select a,b,c,d,e from T0

10)SELECT.join

select tmp1.No no1,tmp2.NO no2 from T0 tmp1,T0 tmp2 where (tmp1.NO%5=0) and (tmp2.NO-tmp1.NO)=4;

4.测试数据记录表:

字段个数

测试用例

测试次数(次)

In-Process(Standalone)模式耗时(ms)

Memory-Only单机模式耗时(ms)

Memory-Only网络模式(本机访问)耗时(ms)

Memory-Only网络模式(网络访问)耗时(ms)

Server模式(本机访问)耗时(ms)

Server模式(远程访问)耗时(ms)

Mysql(本机访问)耗时(ms)

Mysql(远程访问)耗时(ms)

21个

CREATE

20次

0

0

0

32

15

16

344

312

INSERT

10000次

984

844

1688

7343

1875

7938

2281

8969

SELECT

5000次

40531

40109

1156859

>20分钟,实在等不下去了

1181094

>20分钟,实在等不下去了

432563

782437

SELECT

1000次

4234

4703

92031

667359

SELECT

100次

468

469

9031

67328

11个

CREATE

20次

0

0

INSERT

10000次

672

576

SELECT

5000次

27641

28672

SELECT

1000次

5个

CREATE TABLE T0(NO INTEGER PRIMARY KEY,a CHAR(20),b CHAR(20),c CHAR(20),d CHAR(20),e

CHAR(20));

20次

0

0

0

312

INSERT INTO T0 VALUES (0,'00','01','02','03','04');

10000次

375

406

1203

1985

select * from T0;

5000次

21968

19860

select * from T0;

1000次

25828

select * from T0;

100次

512

2594

select a,b,c,d,e from T0

5000次

19313

select a,b,c,d,e from T0

100次

391

2266

select tmp1.No no1,tmp2.NO no2 from T0 tmp1,T0 tmp2 where (tmp1.NO%5=0) and (tmp2.NO-tmp1.NO)=4;

100次

不支持%

226047

select tmp1.No no1,tmp2.NO no2 from T0 tmp1 join T0 tmp2 on (tmp2.NO-tmp1.NO)=4;

1次

32062

11219

select tmp1.No no1,tmp2.NO no2 from T0 tmp1 join T0 tmp2 on mod(tmp1.NO,5) = 0 and

(tmp2.NO-tmp1.NO)=4 ;

1次

6360

2078

select tmp1.No no1,tmp2.NO no2 from T0 tmp1 join T0 tmp2 on tmp1.NO>50 and (tmp2.NO-tmp1.NO)=4

;

1次

32063

36031

10000

select No from T0 where mod(NO,5) = 0 ;

100次

1328

688

select No from T0 where NO>50 ;

100次

250

1719

select No from T0 where NO>50 and NO<900;

100次

94

203

delete from T19 where no>=0 and no<=0(为NO创建了索引)

10000次

344

328

1063

1141

1547

delete from T19 where no>=0 and no<=0(没有为NO创建了索引)

10000次

2282

2125

3156

3484

2359

update T19 set a=123 where no>=0 and no<=0(为NO创建了索引)

10000次

1610

750

1515

3078

2218

update T19 set a=123 where no>=0 and no<=0(没有为NO创建了索引)

10000次

4297

2734

3656

5594

2547

21个

CREATE

20次

0

16

31

32

16

16

328

313

INSERT

500次

125

78

172

421

141

734

156

453

SELECT

500次

234

250

8078

17438

10078

18125

1078

3234

16个

CREATE

20次

15

0

16

31

31

16

312

344

INSERT

500次

110

78

156

391

125

122

157

469

SELECT

500次

218

219

5890

13250

6329

13422

859

2515

11个

CREATE

20次

16

0

16

15

0

16

312

328

INSERT

500次

78

79

156

344

109

406

156

453

SELECT

500次

172

203

3469

7391

1985

7438

610

1906

6个

CREATE

20次

0

0

15

15

0

16

312

313

INSERT

500次

78

63

141

329

109

672

156

437

SELECT

500次

141

156

1516

3968

969

3937

469

1407

从上表可见:

1)支持远程访问时,执行CREATE、INSERT语句,HSQLDB明显比MYSQL具有优势。

2)支持远程访问时,执行SELECT查询语句,MYSQL比HSQLDB具有优势。

3)“Memory-Only网络模式”和“Server模式”在效率上差别不明显。

4)“In-Process(Standalone)模式”和“Memory-Only单机模式” 在效率上差别不明显。

5)只允许单机访问时,HSQLDB明显比MYSQL具有明显的优势。(写速度2:1,读速度4:1)

6)HSQLDB对JOIN查询的效率显著不如MYSQL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值