下面分別對(duì)SQLite和H2進(jìn)行了性能測(cè)試
主機(jī): 操作系統(tǒng): Windows XP;
CPU: Intel Dual 2.2GHZ;
內(nèi)存: 1.99GB內(nèi)存
測(cè)試目標(biāo)版本:SQLite 3.6.12
測(cè)試數(shù)據(jù)庫(kù)表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) |
|
|
使用C++編寫了測(cè)試工程,啟動(dòng)測(cè)試程序后,先分別插入50000條和1000000條數(shù)據(jù),然后執(zhí)行一系列的測(cè)試
用例名 | 5w(條)單個(gè)線程 | 100w(條)單個(gè)線程 | 100w(條)10個(gè)并發(fā)線程 |
初始插入時(shí)間 | 2s | 45s |
|
初始插入時(shí)間(不加索引) | 1.782s | 38.109s |
|
插入1條記錄 | 100納秒以內(nèi) | 100納秒以內(nèi) | 0.0016s |
插入1000條記錄 | 0.047s | 0.047s | 0.453s |
插入1000條記錄(無(wú)索引) | 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)計(jì)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ù)(無(wú)索引) | 0.016s | 0.375s | 2.719s |
刪除一條數(shù)據(jù) | 100納秒以內(nèi) | 100納秒以內(nèi) | 0.0041s |
刪除一條條數(shù)據(jù)(無(wú)索引) | 0.125s | 5.047s |
|
刪除10000條數(shù)據(jù) | 0.078s | 0.078s |
|
刪除10000條數(shù)據(jù)(無(wú)索引) | 79-125ms | 5.031s |
|
結(jié)論:
1. SQLlite內(nèi)存數(shù)據(jù)庫(kù)的處理速度很快;
2. SQLlite內(nèi)存數(shù)據(jù)庫(kù)在查找數(shù)據(jù)時(shí)有索引的情況下,查詢、更新、刪除速度快;
3. SQLlite內(nèi)存數(shù)據(jù)庫(kù)并發(fā)性比較差,可以認(rèn)為并發(fā)能力為0;
4. SQLlite內(nèi)存數(shù)據(jù)庫(kù)占用內(nèi)存空間,100w條數(shù)據(jù)在40M左右(創(chuàng)建單個(gè)索引,6個(gè)字段)
5. 針對(duì)數(shù)據(jù)流探針來(lái)說(shuō),5w條數(shù)據(jù)SQLlite歸并的速度在0.688s,可以嘗試將部分功能用數(shù)據(jù)庫(kù)歸并實(shí)現(xiàn)。
6. SQLLite支持自定義函數(shù),效率沒有測(cè)試,應(yīng)該和他提供的API效率差不多
7. SQLLite支持復(fù)合sql語(yǔ)句
聯(lián)系客服