@@ -68,5 +68,70 @@ sdb, err := NewShardingDb(Sha256Sharding, db1, db2)
6868...
6969` ` `
7070
71+ # # Performance Benchmark
72+
73+ # ## Environment
74+ * Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz * 10 Core
75+ * 40GB RAM
76+ * 3 SSD: /data, /data1, /
77+
78+ generate data by command:
79+ ` ` ` bash
80+ go test -run " TestCompareDbPerformance"
81+ ` ` `
82+ Test case: total 1000000 key-value pairs, 100 go routines, 100 key-value pairs per batch.
83+
84+ # ## 1. PutData
85+
86+ | Data Size | LevelDB | ShardingDB(3 folders) | ShardingDB(6 folders) | ShardingDB(encrypt 3 folders) |
87+ | :---------:| :-------:| :---------------------:| :---------------------:| :-----------------------------:|
88+ | 100B | 2.27s | 0.659s | 0.581s | 0.953s |
89+ | 200B | 4.45s | 1.07s | 0.683s | 1.9s |
90+ | 500B | 15.3s | 3.36s | 1.49s | 6.4s |
91+ | 1KB | 48.9s | 9.42s | 3.74s | 17.69s |
92+ | 10KB | 1117s | 351s | 123s | 0.0016s |
93+
94+ # ## 2. GetData
95+
96+ | Data Size | LevelDB | ShardingDB(3 folders) | ShardingDB(6 folders) | ShardingDB(encrypt 3 folders) |
97+ | :---------:| :-------:| :---------------------:| :---------------------:| :-----------------------------:|
98+ | 100B | 2.23s | 1.25s | 1.02s | 1.86s |
99+ | 200B | 3.09s | 1.42s | 1.27s | 2.24s |
100+ | 500B | 4.17s | 1.91s | 1.62s | 3.73s |
101+ | 1KB | 7.97s | 2.37s | 2.26s | 4.53s |
102+ | 10KB | 12.75s | 9.54s | 11.03s | 0.0016s |
103+
104+ # ## 3. GetData not found
105+
106+ | Data Size | LevelDB | ShardingDB(3 folders) | ShardingDB(6 folders) | ShardingDB(encrypt 3 folders) |
107+ | :---------:| :-------:| :---------------------:| :---------------------:| :-----------------------------:|
108+ | 100B | 2.14s | 1.36s | 0.87s | 1.43s |
109+ | 200B | 2.07s | 1.47s | 0.9s | 1.6s |
110+ | 500B | 2.05s | 1.51s | 0.93s | 1.81s |
111+ | 1KB | 2.35s | 1.64s | 0.891s | 2.28s |
112+ | 10KB | 8.68s | 5.56s | 2.48s | 0.0016s |
113+
114+
115+ # ## 4. DeleteData
116+
117+ | Data Size | LevelDB | ShardingDB(3 folders) | ShardingDB(6 folders) | ShardingDB(encrypt 3 folders) |
118+ | :---------:| :-------:| :---------------------:| :---------------------:| :-----------------------------:|
119+ | 100B | 3.82s | 2.76s | 1.02s | 1.72s |
120+ | 200B | 3.81s | 1.71s | 1.02s | 1.74s |
121+ | 500B | 3.85s | 1.76s | 1.05s | 1.69s |
122+ | 1KB | 3.84s | 1.72s | 1.04s | 1.74s |
123+ | 10KB | 3.844s | 1.78s | 1.06s | 0.0016s |
124+
125+ # ## 5. Iterator
126+
127+ | Data Size | LevelDB | ShardingDB(3 folders) | ShardingDB(6 folders) | ShardingDB(encrypt 3 folders) |
128+ | :---------:| :-------:| :---------------------:| :---------------------:| :-----------------------------:|
129+ | 100B | 0.133s | 0.184s | 0.222s | 0.18s |
130+ | 200B | 0.151s | 0.246s | 0.246s | 0.191s |
131+ | 500B | 0.282s | 0.351s | 0.41s | 0.344s |
132+ | 1KB | 0.514s | 0.419s | 0.472s | 0.541s |
133+ | 10KB | 2.46s | 2.39s | 1.96s | 0.0016s |
134+
135+
71136
72137Most interfaces are the same as [goleveldb](https://github.com/syndtr/goleveldb). For my interface definition, please refer to [DbHandle](https://github.com/studyzy/shardingdb/blob/main/interfaces.go).
0 commit comments