SurrealDB 3.x Benchmarked: 1.5x Postgres Writes, 35x Neo4j Scans
SurrealDB 3.x hits 141k ops/s on mixed CRUD with full durability (fsync on). That's 1.5× faster writes than Postgres, 5–7× faster than MySQL, and 2–3.5× faster than Neo4j. On indexed predicate scans, it's 35× faster than Neo4j.
The numbers come from a benchmark run on identical hardware: AMD Ryzen Threadripper 9970X (32C/64T), 128 GiB DDR5, NVMe, Ubuntu 24.04. Every database was tuned for production—connection pools, buffer pools, WAL settings, indexes—all checked into the crud-bench repository. Workloads used 128 clients, 48 concurrent queries each, against 5–15 million rows of mixed-type records.
Durability: fsync on, no shortcuts
Last year's SurrealDB benchmarks ran with fsync disabled. This time, every engine flushes WAL on every commit. Configuration files are public for audit. The numbers reflect what you get when a power outage won't lose data.
SurrealDB's own trajectory: 3.x is a rewrite
SurrealDB 1.x → 2.x → 3.x shows massive internal gains:
- Mixed CRUD: 78k → 107k → 141k ops/s (31% from 2.x to 3.x)
- Full-table scans: 0.06 → 0.09 → 11 ops/s (164× improvement from 1.x to 3.x)
- Indexed lookups: 32 → 44 → 104 ops/s (3.2×)
- Tail latency improved 27–99% depending on workload
The 11,894% scan improvement comes from eliminating per-row decoding overhead in the query planner and storage engine.
vs. Postgres and MySQL
| Workload | SurrealDB | Postgres | MySQL |
|---|---|---|---|
| Create | 122k | 83k | 22k |
| Read | 254k | 327k | 195k |
| Update | 106k | 81k | 22k |
| Delete | 156k | 86k | 22k |
| count(*) on 5M rows | 12 | 8 | 42 |
SurrealDB is ~1.5× faster on writes than Postgres, and 5–7× faster than MySQL. Postgres still leads on single-record reads and indexed predicate filtering—a gap SurrealDB plans to close in 3.1 with cost-based optimisation.
vs. MongoDB and ArangoDB
| Workload | SurrealDB | MongoDB | ArangoDB |
|---|---|---|---|
| Create | 122k | 183k | 1.0k |
| Read | 254k | 200k | 255k |
| Update | 106k | 160k | 0.9k |
| Delete | 156k | 200k | 1.0k |
| Unindexed filter scan | 8.3 | 3.0 | 8.5 |
MongoDB leads on single-record writes. SurrealDB is ~1.3× faster on reads and ~2.7× faster on unindexed scans. Against ArangoDB's document engine, SurrealDB is 100–150× faster on writes.
vs. Neo4j and ArangoDB (Graph)
| Workload | SurrealDB | Neo4j | ArangoDB |
|---|---|---|---|
| Create | 122k | 42k | 1.0k |
| Read | 254k | 174k | 255k |
| Update | 106k | 50k | 0.9k |
| Delete | 156k | 44k | 1.0k |
| Indexed filter scan | 42 | 1.2 | - |
SurrealDB is 2–3.5× faster on writes and 1.5× faster on reads than Neo4j. Indexed scans are 35× faster. No separate graph database required.
vs. Redis and KeyDB (In-Memory)
| Operation | SurrealDB | Redis | KeyDB |
|---|---|---|---|
| Create | 300.8k | 85.8k | 79.5k |
| Read | 288.1k | 367.9k | 348.6k |
| Update | 300.6k | 89.0k | 85.2k |
| Delete | 279.3k | 100.6k | 100.0k |
SurrealDB's in-memory engine (with append-only persistence) is ~3× faster than Redis on writes, updates, and deletes. Redis still wins on large batch reads and single-record reads.
Embedded mode vs. SQLite
| Workload | SurrealDB embedded | SQLite |
|---|---|---|
| Create | 110k | 1.3k |
| Read | 138k | 154k |
| Update | 145k | 1.3k |
| Delete | 101k | 1.3k |
| Unindexed scan | 39 | 6 |
| Indexed scan | 7.5k | 2.3k |
SurrealDB embedded is ~85× faster on creates, ~110× faster on updates, ~75× faster on deletes. Reads are comparable. Indexed scans are ~3× faster.
What's next: SurrealDB 3.1
SurrealDB acknowledges gaps vs. Redis on batch ops, MongoDB on single-record writes, and Postgres on indexed filtering. The 3.1 cycle targets:
- Batch path rewrites with client-side pipelining
- Cost-based query optimisation with predicate pushdown
- Storage layer improvements for document workloads
- Vector and graph traversal optimisations
Why this matters for AI agents
Agent memory needs multiple data models—relational, document, graph, vector, full-text, time-series, key-value—in one transactional store. SurrealDB's single engine handles all shapes, and its embedded mode runs the same disk format as the distributed server. That means agents can use the same query language (SurrealQL) locally, at the edge, or in the cloud without glue code.
Editor's Take
I've watched SurrealDB evolve from a promising prototype to a serious contender. The 3.x numbers are impressive, but I'm skeptical of any benchmark run by the vendor—even with public configs. I'd love to see third-party reproductions. That said, the multi-model approach is compelling. I've personally dealt with the pain of stitching Postgres + Redis + Neo4j for a single application, and if SurrealDB can deliver on its promises, it's a game-changer for stack simplicity. The AI agent use case feels a bit like marketing hype, but the technical foundation is solid. I'll be testing 3.x in a side project this month.




