Skip to main content
All comparisons/ScramDB vs SQLite

ScramDB vs SQLite

SQLite is the most deployed database in the world and it is deliberately not a server: its documentation says it "competes with fopen()", it allows one writer at any instant, and it tells you to avoid sharing a database across machines. Foreign keys are even off unless each connection turns them on. ScramDB is the database you move to when the application outgrows a file, and it answered the same analytical workload 407 times faster.

Faster
407x
ScramDB 31.6s against SQLite 12,859s. ScramDB answered every query.
Faster from cold
103x
ScramDB 189s against SQLite 19,444s. First touch, nothing cached.
Faster to load
3.7x
ScramDB 717s against SQLite 2,674s. Full 100 million row ingest.
Smaller on disk
4.4x
ScramDB 16.1 GiB against SQLite 70.6 GiB. Same data, after load.
At a glance

Side by side

ScramDBSQLite
Concurrent writersAs many as you haveOne writer at any instant, per its own documentation
Network accessA server on the PostgreSQL wire protocolA local file. Its docs advise against sharing one across machines
Foreign keysEnforced, alwaysPresent but disabled by default; each connection must enable them
TypingReal column types, checked on writeType affinity: the type belongs to the value, so a TEXT column can hold a number as text
Schema changesALTER TABLE for the change you needRENAME, ADD, DROP and a NOT NULL change; anything else is the documented twelve step table rebuild
Access controlRoles, grants, column privileges, row-level securityFilesystem permissions
AnalyticsColumnar, compiled to native code, every coreRow store, single process
Where it fitsThe system of record for a service or a fleet of themEmbedded and edge, application file formats, local analysis

The wall is the writer, not the speed

Every SQLite application eventually meets the same wall: a second process needs to write. Its documentation is honest about it, and about the network filesystem workarounds people reach for. ScramDB is a server from the first line: many writers at once, roles, and policies that decide which rows each of them may see.

And the analytical gap is enormous

A row store in one process against a columnar engine compiled to native machine code across every core is not a close contest: 407 times faster on the same data and the same machine, in a fraction of the disk.

When SQLite is the right answer

Embedded devices, mobile apps, application file formats, test fixtures and local analysis. SQLite is superb, public domain, and the right default for a single process that owns its data.

The measurement, as of 5 September 2026. A full analytical workload over 100 million rows of real web analytics data, run on a 16 vCPU AWS instance. Ours is a single ScramDB node in its stock configuration, with the GPU off and nothing tuned for the test. Rival figures are those systems’ own published results for the same instance type. These are the numbers as of that date, not a permanent scoreboard: the engine is tuned continuously and it has got faster through every round of this work, so a later run should read better than this one.

Run it yourself in one line

One static binary, no dependencies. It picks its own config, listens on the postgres port 5432 and runs in the background.

$curl -fsSL https://scramdb.com/install | bash

Quick start · How the engine works · Talk to us

A full analytical workload over 100 million rows of real web analytics data, run on a 16 vCPU AWS instance, measured 5 September 2026. Ours is a single ScramDB node in its stock configuration, with the GPU off and nothing tuned for the test. Rival figures are those systems’ own published results for the same instance type. These are the numbers as of that date, not a permanent scoreboard: the engine is tuned continuously and it has got faster through every round of this work, so a later run should read better than this one.