昨晚(今天凌晨)测试了一下SimpleSQL数据库
关键字: SimpleSQL 数据库 HSQL去年10月份就下载了一个SimpleSQL数据库在硬盘上,一直没有好好去摆弄摆弄,昨晚看到它,就想测测它的性能,于是就动手写点简单程序测了一下,立此存照一下。
简单介绍一下SimpleSQL是何物。SimpleSQL(下面简称为SSQL)是一个JAVA开发的单文件关系数据库,可以嵌入使用,可以在内存中保持数据,也可以以C-S模式使用,还可以用作其他多个数据库的代理,这是SSQL比较有意思的特点。下面的图表示出了SSQL的几种工作方式:
从这些工作模式来看,SSQL与HSQL很象,但我感觉SSQL的语法、函数等更象Oracle,用这个数据库开发的应用,移到Orace上时迁移工作量可能会小一些。所以,在有些场合不妨可以试用一下这个数据库。下面是SSQL手册自己宣称的特性:
autocommit mode
multiversion concurrency control
transactional mode
deadlock detection
transactional integrity (unique constraints and references)
64-bit portable database file
theoretical limit of 8589934592 GB
subselects
distributed queries
outerjoins: standard SQL92 JOIN command, (+) outerjoin operator (与Oracle相似之处)
heterogeneous queries
data migration queries (比较独特的特点)
Web report formatting functions
它还支持诸如: CASE、DECODE等函数(学Oracle的 :-) )
其他详细的特性我就不罗列了,如果有兴趣大家可以自己找来玩玩。
下面简单讲一下昨晚我测试的结果。
我的测试案例设计是:
对一张表操作:
tbl_user
---------------------------------
id bigint
login_id varchar(20)
password varchar(50)
name varchar(20)
email varchar(200)
sign varchar(2000)
regtime timestamp
用一个SQL语句往表里插入1000X1000记录:
Insert into tbl_user
values( NEXTVAL('tbl_user'), 'test'|| CURRVAL('tbl_user'), '720123', '张三'|| CURRVAL('tbl_user'), CURRVAL('tbl_user') || '@yahoo.com', MD5('张三'|| CURRVAL('tbl_user')), NOW())
这个SQL语句中的NEXTVAL是Sequence函数,与Oracle的Sequence很类似,不同的只是这里的Sequence不需要手工建,只要我们有调用NEXTVAL('tbl_user'),就会自动生成一个名为“tbl_user”的sequence,用起来比Oracle方便一些。
用一个SQL语句从表里查询总记录数:
select count(id) as cnt from tbl_user
我的机器配置是:
DELL LATITUDE D610
CPU: 迅驰1.8G
内存: 512M
在NetBeans5.5 Beta版中编写程序并以Run模式运行程序:
测试结果如下:
插入操作: 191分钟
查询操作(三次): 100秒
94秒
87秒
从这个结果来看,我认为SSQL作为内嵌数据库发布一些DEMO应用或是用来作开发数据库,是能够胜任。
最后有一点比较遗憾的是SSQL的新版本移掉了其中一些作者认为不需要的特性(包括C-S工作方式、事务等),而这些特性可能是我们应用开发人員往往需要的,所以我们只能用它的早期版本。作者网站对移掉的一些特性声明如下:
- The second version of SimpleSQL has been renamed to JavuSQL.
- This version is optimized for JavuServer.
- The main purpose is now embedded SQL database component.
- Most features not useful for JavuServer has been removed, including: client-server mode, heterogeneous queries, transactions, C++ compatibility.
- Remover features could be added on request in the future.
- JavuSQL is now available as a part of JavuServer,
- stand-alone version and source code (under LGPL) will be available soon.
为了下次不至于找不到这个数据库的早期版本,我把我下的1.2.3版放上来。
- 09:11
- 浏览 (5702)
- 评论 (11)
- 分类: 技术文章(Database)
- 进入论坛
- 相关推荐
评论
我的测试案例设计是:
还是对一张表操作:
tbl_user --------------------------------- id IDENTITY login_id varchar(20) password varchar(50) name varchar(20) email varchar(200) regtime timestamp
这次测试的表比SSQL测试时少了一个VARCHAR(2000)的字段,因为HSQLDB的Sequence用起来不如SSQL,所以就改用IDENTITY;表类型就建成cached,因为HSQLDB默认的表类型内存表(Memory),刚开始时我用默认的表类型,插入数据是很快,但在插入到150K左右的记录时就OutOfMemory了,测不下去,试了几次不行,所以我就把表类型改成缓存表(CACHED)。
用一个SQL语句往表里插入1000X1000记录:
Insert into tbl_user( login_id, password, name, email, regtime) values( 'test' || IDENTITY() , '1234567', '张三' || IDENTITY(), 'test' || IDENTITY()|| '@yahoo.com', NOW())
用一个SQL语句从表里查询总记录数:
select count(id) as cnt from tbl_user
我的机器配置是:
DELL LATITUDE D610
CPU: 迅驰1.8G
内存: 512M
在NetBeans5.5 Beta版中编写程序并以Run模式运行程序:
HSQLDB的版本是:1.8.0.7
测试结果如下:
插入操作: 393分钟 (SSQL是 191 min)
查询操作(三次): 19.39秒 (SSQL是 100 sec)
15.297秒 (SSQL是 94 sec)
15.203秒 (SSQL是 87 sec)
从比较结果来看,SSQL的插入性能优于HSQLDB,但查询性能比HSQLDB差太多(我想不明白是怎么回事,有没有哪位大拿知道原因给解释一下。),所以,我认为,SSQL和HSQLDB总体性能没有太大的差别,但鉴于SSQL的开发已经转向,而HSQLDB还在不断发展中,使用时选用HSQLDB比较稳妥。
H2 Database Engine 我也有,找个时间也测一下。
http://www.h2database.com
这个图片看不清吗?
- 浏览: 89185 次

- 详细资料
搜索本博客
我的相册
共 1 张
最近加入圈子
最新评论
-
Axis实践之Axis入门
楼主说的步骤太复杂了,初学者可能看得晕,这里有个捷径,web services和 ...
-- by taelons -
Web Service实践之——开 ...
用Spring的话 XFIRE还是首选
-- by lixiaoxu85 -
Web Service实践之——开 ...
wdmsyf 写道 Web Service实践之—&mdash ...
-- by fengzhiyin -
Axis实践之Axis入门
现在NetBeans下面也可以通过升级插件获得之间的Axis2集成了
-- by Joo -
Axis实践之Axis入门
第一种 我在eclipse 下通过测试 第二种 不行 Error genera ...
-- by xiaopang106






评论排行榜