Posted on 2012-07-20 16:57
点点滴滴 阅读(382)
评论(0) 编辑 收藏 引用 所属分类:
10 服务器
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语句