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 |