Benchmarks¶
This page collects the current Python embedded comparison charts and a plain-language summary of where DecentDB is leading or trailing in the pack.
Benchmark snapshot metadata¶
- Document updated: 2026-03-25 18:28:28 UTC
- Ranking snapshot: final sweep point at
500operations from the exported benchmark bundles indocs/assets/benchmarks/python-embedded-compare/
Engine version stamps¶
| Engine | Version stamp | Source |
|---|---|---|
| DecentDB | 2.0.0 | Workspace package version |
SQLite (SQLite_wal_full) | 3.52.0 | Benchmark-reported engine version |
| DuckDB | 1.5.1 | Benchmark-reported engine version |
H2 (JDBC) | 2.2.224 | Benchmark-reported engine version |
Apache Derby (JDBC) | 10.16.1000001.1901046 | Installed derby.jar manifest |
HSQLDB (JDBC) | 2.7.4 | Installed hsqldb.jar manifest specification version |
Overview¶
These benchmark results come from the Python embedded comparison harness in benchmarks/python_embedded_compare/. The goal of that harness is not to produce a single marketing number, but to compare DecentDB against other embedded engines across a small set of repeatable workloads using the same orchestrator, dataset shape, and measurement flow.
What this benchmark is measuring:
- Embedded database behavior under the same Python-driven benchmark runner
- Mean latency across a sweep of operation counts
- Read-heavy and write-heavy query shapes, not just one microbenchmark
- Relative standing of DecentDB versus a mixed pack of native and JVM-backed embedded engines
Database engines included on this page:
- DecentDB
- SQLite (
SQLite_wal_fullconfiguration) - DuckDB
- H2 (
JDBC) - Apache Derby (
JDBC) - HSQLDB (
JDBC)
Workloads covered here:
workload_c: a flat-table benchmark focused on indexed point lookups and full scans, intended to mirror the simpler Python binding access pattern more closelyworkload_a: an OLTP-ish orders-and-customers workload covering point selects, range scans, joins, aggregates, updates, and deletes
How to interpret the results:
- Lower mean latency is better.
- The summary table at the top uses the final sweep point shown in the charts:
500operations. - The charts underneath show the full trend across
10,50,100,250, and500operations. - A strong result on one benchmark does not imply the same result on all benchmarks; this page is meant to show both the strong and weak areas clearly.
The summary table below uses the latest sweep point shown in the charts: 500 operations. Lower mean latency is better.
At-a-glance summary¶
| Workload | Benchmark | Leader at 500 ops | Leader mean latency (us/op) | DecentDB mean latency (us/op) | DecentDB rank | Reading |
|---|---|---|---|---|---|---|
| Workload C | Full scan | DecentDB | 292.43 | 292.43 | 1st of 6 | Leading |
| Workload C | Point select | SQLite_wal_full | 4.76 | 5.53 | 2nd of 6 | Near the front |
| Workload A | Point select | SQLite_wal_full | 4.81 | 28.04 | 2nd of 6 | Near the front |
| Workload A | Aggregate | SQLite_wal_full | 50.94 | 168.51 | 2nd of 6 | Near the front |
| Workload A | Join | SQLite_wal_full | 58.63 | 199.79 | 2nd of 6 | Near the front |
| Workload A | Range scan | SQLite_wal_full | 13.40 | 167.67 | 5th of 6 | Trailing |
| Workload A | Delete | SQLite_wal_full | 21.01 | 166.72 | 5th of 6 | Trailing |
| Workload A | Update | SQLite_wal_full | 19.39 | 269.75 | 5th of 6 | Trailing |
Notes:
0.00 us/opmeans the chart data rounded the measured mean latency down to zero at this display precision. It does not mean the operation was literally free.6th of 6on a chart means DecentDB was slowest for that specific benchmark at that specific operation count. It is not an overall ranking across all benchmarks.- These charts come from the exported benchmark bundles in
docs/assets/benchmarks/python-embedded-compare/.
How to read these charts¶
Use this page in two passes:
- Check the summary table first. It tells you where DecentDB ranks at the
500-operation sweep point for each benchmark. - Then look at the matching chart to see the full curve across
10,50,100,250, and500operations.
Reading rules:
- Lower mean latency is better.
- The dark DecentDB series is emphasized so you can find it quickly.
- The badge on each per-benchmark chart reports DecentDB's rank for that benchmark at the final sweep point.
- A rank like
2nd of 6means only one engine was faster on that metric at500ops. - A rank like
6th of 6means DecentDB was slowest on that benchmark at500ops, not that it was worst overall.
Example:
- In
workload_c / full_scan, DecentDB is1st of 6, so it leads that benchmark at500ops. - In
workload_a / update, DecentDB is5th of 6, so it trails the pack on that specific write-path measurement. - In
workload_a / point_select, DecentDB is2nd of 6, which is a competitive result even though it is not the leader.
Workload C: Flat-table binding parity¶
This workload mirrors the simpler Python binding access pattern more closely than the OLTP-style canonical suite.
Overview¶

Point select¶

Full scan¶

Workload A: OLTP-ish orders¶
This workload uses the canonical orders-and-customers schema and is more sensitive to write-path and relational execution behavior than workload C.
Overview¶

Point select¶

Range scan¶

Join¶

Aggregate¶

Update¶

Delete¶
