posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

(搬运工)常用内存数据库介绍(六)

Posted on 2012-07-20 16:57 点点滴滴 阅读(369) 评论(0)  编辑 收藏 引用 所属分类: 10 服务器

6.  性能测试

下面分别对SQLiteH2进行了性能测试

 

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语句