视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HSQLDB的研究与性能测试(与Mysql对比)
2020-11-09 07:40:23 责编:小采
文档


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

69

 

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次

271

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

50

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

下载本文
显示全文
专题