6. 性能测试
下面分别对SQLite和H2进行了性能测试
6.1 SQLite测试方案
6.1.1 测试环境
主机: 操作系统: Windows XP;
CPU: Intel Dual 2.2GHZ;
内存: 1.99GB内存
测试目标版本:SQLite 3.6.12
6.1.2 测试数据
测试数据库表ip_table结构如下
字段名
|
类型
|
Id(PK)
|
Integer
|
Dst_ip
|
Varchar(20)
|
Agent_ip
|
Varchar(20)
|
Dst_mac
|
Varchar(20)
|
Dst_port
|
Integer
|
Dst_vlan
|
Varchar(20)
|
|
|
6.1.2 测试过程
使用C++编写了测试工程,启动测试程序后,先分别插入50000条和1000000条数据,然后执行一系列的测试
6.1.3 测试结果
用例名
|
5w(条)单个线程
|
100w(条)单个线程
|
100w(条)10个并发线程
|
初始插入时间
|
2s
|
45s
|
|
初始插入时间(不加索引)
|
1.782s
|
38.109s
|
|
插入1条记录
|
100纳秒以内
|
100纳秒以内
|
0.0016s
|
插入1000条记录
|
0.047s
|
0.047s
|
0.453s
|
插入1000条记录(无索引)
|
0.6s
|
1s
|
11.39s
|
查询一条记录
|
100纳秒以内
|
100纳秒以内
|
0.0033s
|
查询一条记录(不使用索引)
|
0.016s
|
0.375s
|
2.859s
|
查询1000条记录
|
0.016s
|
0.391s
|
2.828s
|
查询1000条记录(不使用索引)
|
0.015s
|
0.375s
|
2.906s
|
查询全部记录分组统计Group by
|
0.688s
|
15.473s
|
|
查询1000 条(结果排序 )
|
0.031s
|
0.39s
|
2.453s
|
查询所有记录(结果排序)
|
0.766s
|
16.203s
|
33.594s
|
更新一条记录
|
100纳秒以内
|
100纳秒以内
|
0.0043s
|
更新一条记录(不使用索引)
|
0.016s
|
0.359s
|
2.719s
|
更新10000条数据
|
0.062s
|
0.047s
|
|
更新10000条数据(无索引)
|
0.016s
|
0.375s
|
2.719s
|
删除一条数据
|
100纳秒以内
|
100纳秒以内
|
0.0041s
|
删除一条条数据(无索引)
|
0.125s
|
5.047s
|
|
删除10000条数据
|
0.078s
|
0.078s
|
|
删除10000条数据(无索引)
|
79-125ms
|
5.031s
|
|
结论:
1. SQLlite内存数据库的处理速度很快;
2. SQLlite内存数据库在查找数据时有索引的情况下,查询、更新、删除速度快;
3. SQLlite内存数据库并发性比较差,可以认为并发能力为0;
4. SQLlite内存数据库占用内存空间,100w条数据在40M左右(创建单个索引,6个字段)
5. 针对数据流探针来说,5w条数据SQLlite归并的速度在0.688s,可以尝试将部分功能用数据库归并实现。
6. SQLLite支持自定义函数,效率没有测试,应该和他提供的API效率差不多
7. SQLLite支持复合sql语句
分享到:
相关推荐
常用内存数据库介绍常用内存数据库介绍
常用内存数据库介绍
常用内存数据库介绍.pdf
什么是内存数据库,常用内存数据库,SQLite最佳试用场合,哪些场合适合使用其他的关系型数据库,内存数据库之比较,性能测试
JAVA常用开源内存数据库比较。让你能很轻松地在众多内存数据库中做出最好选择!
实现词法分析和语法分析的内存小容量数据库,主要用于学习编译原理
IT资料 常用软件 内存数据库 jar包
一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: ...
一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递”:memory:”,如: ...
Informix数据库服务器提供了...onmode 改变方式和共享内存 onparams 修改日志配置参数 onspaces 修改blobspace或Dbspace onstat 监控的运行 ontape 日志登录,archive创建和数据重装 onunload 以页为单位传送二进制数据
一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递”:memory:”,如: ...
h2原版英文资料!h2是基于java的内存数据库,pdf主要是h2数据库功能介绍和说明,常用命令行用法,通脚本操作数据库!备份恢复说明!数据库升级
SQL Server 的.NET 数据... 使用SqlDataAdapter,可以填充驻留在内存中的DataSet可用于查询和更新数据库。本文档包括了常用的数据库接口类,所有字段的说明和示例代码,一份文档足以让你掌握Ado.Net的常用编程技巧。
个人搜集的包括了3大主流数据库的入门介绍,编程指南,常用sql集合等多方面内容。
(7)Aerospike:Aerospike数据库是⼀个键值存储,⽀持混合内存架构,通过强⼀致性和可调⼀致性保证数据的完整性。 3、⽂档数据库:MongoDB、CouchDB、Perservere、Terrastore、RavenDB等,下⾯简单介绍⼏个 (1)...
单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库...
v$lock:查看当前数据库中锁的信息 v$mem_pool:显⽰所有的内存池信息 V$deadlock_histor::记录死锁的历史信息 V$TABLESPACE:显⽰表空间信息,不包括回滚表空间信息 V$TRX:显⽰所有活动事务的信息。通过该视图...
源码通过置入汇编代码并调用一些常用的API函数实现内存微型数据库。易语言内存微型数据库源码可临时保存数据。