HSQLDB的研究与性能测试(与Mysql对比)
Jun 07, 2016 pm 03:40 PMHSQLDB 的研究与性能测试(与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 |
100次 |
94 |
|
|
|
|
|
203 |
|
|
delete from T19 where no>=0 and no(为NO创建了索引) |
10000次 |
344 |
328 |
1063 |
|
1141 |
|
1547 |
|
|
delete from T19 where no>=0 and no(没有为NO创建了索引) |
10000次 |
2282 |
2125 |
3156 |
|
3484 |
|
2359 |
|
|
update T19 set a=123 where no>=0 and no(为NO创建了索引) |
10000次 |
1610 |
750 |
1515 |
|
3078 |
|
2218 |
|
|
update T19 set a=123 where no>=0 and no(没有为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 |

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP?

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP?

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP?

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP?

Perbandingan prestasi rangka kerja Java yang berbeza

Bagaimana untuk membuat jadual MySQL menggunakan PHP?

Bagaimana untuk mengoptimumkan prestasi program berbilang benang dalam C++?
