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语句
分享到:
相关推荐
内存数据库简介 内存数据库是一种将整个数据库存储在计算机的主存中,以提高数据库的性能和响应速度的技术。传统的数据库管理系统将所有数据存储在磁盘上,称为磁盘数据库(DRDB:Disk-Resident Database)。磁盘...
下面,我们将深入探讨几种常用的内存数据库,包括它们的特点、应用场景以及为何它们能够在现代数据处理环境中占据一席之地。 ### 1. **Redis** Redis(Remote Dictionary Server)是最受欢迎的内存数据库之一,它...
常用内存数据库的比较 内存数据库是一种新型的数据库管理系统,它将整个数据库放入内存中,以提高数据库的性能和响应速度。与传统的磁盘数据库相比,内存数据库具有很多优势,如快速的数据访问速度、低延迟、低成本...
常用内存数据库介绍.pdf
内存数据库是一种将数据存储在内存中的数据库系统,其主要特点是高速读写性能,适用于需要快速响应和处理大量数据的应用场景。在JAVA开发中,有很多开源的内存数据库可以选择,本篇文章将对比分析这些数据库的特点、...
实现词法分析和语法分析的内存小容量数据库,主要用于学习编译原理
内存数据库是现代信息技术领域中的一个重要概念,特别是在实时交易系统中,它扮演着催化剂的角色,显著提高了数据处理的速度和效率。本文将深入探讨内存数据库的基本原理、优势、应用场景以及与实时交易系统的结合。...
哈希表是内存数据库中常用的一种数据结构,它在Linux环境下扮演着关键角色。 哈希表,又称散列表,是通过哈希函数将数据映射到一个固定大小的数组中。这个函数能够将任意长度的输入(如字符串)转化为固定长度的...
描述提到的“排序的列表的基类一种实时内存数据库组织与管理方法”,意味着文件内容可能涉及一种特定的数据结构——排序列表,这是内存数据库中常用的数据组织方式,用于快速查找、插入和删除数据。排序列表通常基于...
1. 数据映射:内存数据库会将常用数据表全部映射到主机共享内存中,同时为关键字段建立内存索引,以加速查询。 2. API接口:应用程序通过调用特定的内存数据库API,直接访问内存中的数据,而不是直接操作物理数据库...
此外,对于源码和工具部分,文章可能还涵盖了开源内存数据库如Redis、Memcached等的简要分析,或者介绍了如何构建一个简单的内存数据库系统,包括数据结构的选择(如哈希表、B树等)和API设计等。 在本科班课程项目...
- `ALTER SYSTEM`:调整数据库系统的参数,例如修改内存分配、日志文件位置等。 - `STARTUP/SHUTDOWN`:启动或关闭数据库实例。 2. **用户管理**: - `CREATE USER`:创建新的数据库用户。 - `GRANT/REVOKE`:...
Hash索引是数据库系统中一种常用的索引技术,尤其适合于内存数据库。它利用哈希函数将数据的键(key)转化为内存地址,使得数据的查找、插入和删除操作能在常数时间内完成,极大地提高了数据访问效率。Hash索引的...
作为一个内存数据库,它的主要特点是数据存取速度快,支持多种数据结构,且提供了丰富的持久化策略。在Java开发中,Redis的使用非常常见,能够显著提升应用程序的响应速度和整体性能。 1. 数据结构: Redis支持...
IT资料 常用软件 内存数据库 jar包
在VC++中,你可以通过传递`:memory:`作为数据库路径来创建内存数据库。CSqlite类可能提供一个`OpenInMemoryDatabase()`方法,调用此方法将创建一个只存在于内存中的数据库实例。 3. **临时数据库**: 临时数据库...
【内存数据库在互联网余票查询中的应用】 随着互联网售票系统的普及,越来越多的旅客选择在线购票,这使得系统在高峰期承受巨大的并发请求压力。其中,余票查询作为关键功能,其性能直接影响用户体验。传统的磁盘...
【高性能模糊检索的内存数据库EMS】是一个专注于提供高效模糊查询能力的内存数据库系统。它针对大规模数据集,尤其是在需要快速响应复杂查询需求的场景下,展现出优越的性能。内存数据库因其将数据存储在内存中,...
下面我们将介绍一些常用的数据库维护 SQL 语句。 一、查询 SQL 的资源消耗情况 在数据库中,SQL 语句的执行会消耗一定的资源,包括 CPU、内存、I/O 等。为了了解 SQL 语句的资源消耗情况,我们可以使用以下 SQL ...