CrossDB vs SQLite3 Benchmark¶
Test tool: CrossBench
Test Config: Random Access, Single Thread, Bind CPU Core
Note
The SQLite DB driver tries to tune SQLite performance as fast as possible and uses sqlite3_prepare_v2 to precompile SQL statements. If you have better optimization methods and it works, please let us know.
SQLite3 Config¶
Test Server¶
CPU : Intel(R) Xeon(R) Gold 5318Y CPU @ 2.10GHz cache size 36864 KB
HDD : DELL PERC H755 Front SCSI Disk
OS : Ubuntu 20.04
SQLite3 : v3.31.1
CrossDB : v0.5.0
On-Disk Database Benchmark¶
Test Script
loop="1 2 3"
./crossdb-bench.bin -H -r 0
for i in $loop; do ./crossdb-bench.bin -s d -i 1k -q 30m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s d -i 10k -q 30m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s d -i 100k -q 20m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s d -i 1m -q 10m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s d -i 10m -q 5m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s d -i 100m -q 5m -u 1m -Q -H -c $cpu; done
loop="1 2 3"
./sqlite-bench.bin -H -r 0
for i in $loop; do ./sqlite-bench.bin -s d -i 1k -q 1k -u 1k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s d -i 10k -q 1m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s d -i 100k -q 1m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s d -i 1m -q 1m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s d -i 10m -q 1m -u 1m -Q -H -c $cpu; done
# This test is very very very slow
for i in $loop; do ./sqlite-bench.bin -s d -i 100m -q 1m -u 1m -Q -H -c $cpu; done
Small Data Set Test

Large Data Set Test

On-RamDisk Database Benchmark¶
Test Script
loop="1 2 3"
./crossdb-bench.bin -H -r 0
for i in $loop; do ./crossdb-bench.bin -s r -i 1k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s r -i 10k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s r -i 100k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s r -i 1m -q 10m -u 10m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s r -i 10m -q 10m -u 10m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s r -i 100m -q 10m -u 10m -Q -H -c $cpu; done
loop="1 2 3"
./sqlite-bench.bin -H -r 0
for i in $loop; do ./sqlite-bench.bin -s r -i 1k -q 1m -u 500k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s r -i 10k -q 1m -u 500k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s r -i 100k -q 1m -u 300k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s r -i 1m -q 500k -u 250k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s r -i 10m -q 500k -u 250k -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s r -i 100m -q 500k -u 250k -Q -H -c $cpu; done
Small Data Set Test

Large Data Set Test

In-Memory Database Benchmark¶
Test Script
loop="1 2 3"
./crossdb-bench.bin -H -r 0
for i in $loop; do ./crossdb-bench.bin -s m -i 1k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s m -i 10k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s m -i 100k -q 40m -u 30m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s m -i 1m -q 10m -u 10m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s m -i 10m -q 10m -u 10m -Q -H -c $cpu; done
for i in $loop; do ./crossdb-bench.bin -s m -i 100m -q 10m -u 10m -Q -H -c $cpu; done
loop="1 2 3"
./sqlite-bench.bin -H -r 0
for i in $loop; do ./sqlite-bench.bin -s m -i 1k -q 2m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s m -i 10k -q 2m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s m -i 100k -q 2m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s m -i 1m -q 1m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s m -i 10m -q 1m -u 1m -Q -H -c $cpu; done
for i in $loop; do ./sqlite-bench.bin -s m -i 100m -q 1m -u 1m -Q -H -c $cpu; done
Small Data Set Test

Large Data Set Test
