6. 性能測試
下面分別對SQLite和H2進行了性能測試
6.1 SQLite測試方案
6.1.1 測試環(huán)境
主機: 操作系統(tǒng): Windows XP;
CPU: Intel Dual 2.2GHZ;
內(nèi)存: 1.99GB內(nèi)存
測試目標版本:SQLite 3.6.12
6.1.2 測試數(shù)據(jù)
測試數(shù)據(jù)庫表ip_table結(jié)構(gòu)如下
|
字段名 |
類型 |
|
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條數(shù)據(jù),然后執(zhí)行一系列的測試
6.1.3 測試結(jié)果
|
用例名 |
5w(條)單個線程 |
100w(條)單個線程 |
100w(條)10個并發(fā)線程 |
|
初始插入時間 |
2s |
45s |
|
|
初始插入時間(不加索引) |
1.782s |
38.109s |
|
|
插入1條記錄 |
100納秒以內(nèi) |
100納秒以內(nèi) |
0.0016s |
|
插入1000條記錄 |
0.047s |
0.047s |
0.453s |
|
插入1000條記錄(無索引) |
0.6s |
1s |
11.39s |
|
查詢一條記錄 |
100納秒以內(nèi) |
100納秒以內(nèi) |
0.0033s |
|
查詢一條記錄(不使用索引) |
0.016s |
0.375s |
2.859s |
|
查詢1000條記錄 |
0.016s |
0.391s |
2.828s |
|
查詢1000條記錄(不使用索引) |
0.015s |
0.375s |
2.906s |
|
查詢?nèi)坑涗浄纸M統(tǒng)計Group by |
0.688s |
15.473s |
|
|
查詢1000 條(結(jié)果排序 ) |
0.031s |
0.39s |
2.453s |
|
查詢所有記錄(結(jié)果排序) |
0.766s |
16.203s |
33.594s |
|
更新一條記錄 |
100納秒以內(nèi) |
100納秒以內(nèi) |
0.0043s |
|
更新一條記錄(不使用索引) |
0.016s |
0.359s |
2.719s |
|
更新10000條數(shù)據(jù) |
0.062s |
0.047s |
|
|
更新10000條數(shù)據(jù)(無索引) |
0.016s |
0.375s |
2.719s |
|
刪除一條數(shù)據(jù) |
100納秒以內(nèi) |
100納秒以內(nèi) |
0.0041s |
|
刪除一條條數(shù)據(jù)(無索引) |
0.125s |
5.047s |
|
|
刪除10000條數(shù)據(jù) |
0.078s |
0.078s |
|
|
刪除10000條數(shù)據(jù)(無索引) |
79-125ms |
5.031s |
|
結(jié)論:
1. SQLlite內(nèi)存數(shù)據(jù)庫的處理速度很快;
2. SQLlite內(nèi)存數(shù)據(jù)庫在查找數(shù)據(jù)時有索引的情況下,查詢、更新、刪除速度快;
3. SQLlite內(nèi)存數(shù)據(jù)庫并發(fā)性比較差,可以認為并發(fā)能力為0;
4. SQLlite內(nèi)存數(shù)據(jù)庫占用內(nèi)存空間,100w條數(shù)據(jù)在40M左右(創(chuàng)建單個索引,6個字段)
5. 針對數(shù)據(jù)流探針來說,5w條數(shù)據(jù)SQLlite歸并的速度在0.688s,可以嘗試將部分功能用數(shù)據(jù)庫歸并實現(xiàn)。
6. SQLLite支持自定義函數(shù),效率沒有測試,應該和他提供的API效率差不多
7. SQLLite支持復合sql語句


