Skip to content
potluckdb

Performance

Features · Performance · Compatibility

These figures come from one performance-suite run on one machine against six remotes. It uses the Python SDK installed from candidate packages. See Concepts for the remote model.

The run’s reports are committed beside the site. This page is generated from them. Release promotion regenerates it from the release commit’s run. No figures are entered manually. Unmeasured values appear as absent rather than zero.

FactValue
Revision0.1.0-rc.34c2f76d9226
Machinec7i.2xlarge in us-east-1
SDKPython 3.14.7, installed from the candidate packages
Build variantbundled
Profile and seedfull, seed 20260824

The full profile performs these operations:

  • Ingests 20,000 rows with 256-byte payloads in batches of 1,000.
  • Samples 400 single-statement writes and point reads.
  • Runs one full aggregate on each engine.
  • Pushes the dataset.
  • Pushes 100 more rows in one steady-state synchronization.
  • Reopens the device’s database cold.
  • Bootstraps a second device from the remote.
  • Transfers 1,000 rows as one delta in each direction.

Operation counts and amplification are deterministic for the profile and seed. Changes to them represent product changes rather than noise.

MeasureDirectory (no network)Amazon S3Amazon S3 Express One ZoneCloudflare R2Google Cloud StorageAzure Blob Storage
Bulk insert, rows per second2,8303,3402,9023,5293,8592,640
Single-statement write, p50, ms0.6071.0030.7030.540.6880.614
Single-statement write, p99, ms1.0252.4034.1482.9453.9621.367
Point read by primary key, p50, ms0.1020.1030.10.10.970.101
Point read by primary key, p99, ms0.1220.6220.1210.131.5080.139
Cold open of an existing replica, ms213.5293.6234.5555.51,728.2238.1
MeasureDirectory (no network)Amazon S3Amazon S3 Express One ZoneCloudflare R2Google Cloud StorageAzure Blob Storage
Full aggregate over every row, SQLite, ms1.5541.7911.4071.5192.5151.586
Full aggregate over every row, DuckDB, first call, ms219.97430.59730.48130.88528.99932.324
Full aggregate over every row, DuckDB, warm, ms1.5291.6571.6611.6061.6591.861
Both engines return the same resultyesyesyesyesyesyes
MeasureDirectory (no network)Amazon S3Amazon S3 Express One ZoneCloudflare R2Google Cloud StorageAzure Blob Storage
First push of the dataset, seconds0.2760.7960.7293.893.8690.616
Steady-state push of 100 rows, ms4.7125.836.3985.91,174.140.6
Steady-state push, PUT requests555555
Steady-state push, GET requests000000
Steady-state push, LIST requests000000
Steady-state push, cell swaps111111
Steady-state push, bytes submitted90,94391,13191,13191,13191,13191,131
Steady-state push, bytes received0188188188188188
Bootstrap of a new device, seconds0.0190.6150.2424.11717.6180.249
Bootstrap, seconds per 100 MB0.38512.2844.82682.265352.0194.97
Delta push of 1000 rows, seconds0.0210.1540.0731.0471.1270.079
Delta pull of the same rows, seconds0.2870.690.4493.7086.8570.489
MeasureDirectory (no network)Amazon S3Amazon S3 Express One ZoneCloudflare R2Google Cloud StorageAzure Blob Storage
Logical data, MB5.25.25.25.25.25.2
Local storage amplification22.422.422.422.422.422.4
Remote amplification, bytes submitted over logical bytes3.533.533.533.533.533.53
Bytes submitted to the remote19,431,50619,432,07019,432,07019,432,07019,432,07019,432,070
Bytes received from the remote21,560,98522,462,01820,663,38620,727,60121,241,60220,663,694
Byte counts are wire bytesnoyesyesyesyesyes
Peak resident memory, MB334.3393391.5394.3381356.6
Whole suite, seconds11.313.512.525.648.613.3
  • The directory column has no network in its path. Its synchronization figures measure the runtime’s own cost. They are not cloud figures. The five provider columns measure each provider from the machine named above.
  • Byte counts are wire bytes for Amazon S3, Amazon S3 Express One Zone, Cloudflare R2, Google Cloud Storage, Azure Blob Storage, counted at the storage interface. For Directory they are logical bytes, which is what the last row of the footprint table states per column.
  • Cloudflare R2 and Amazon S3 Express One Zone run through the S3 adapter. Their reports record s3 as the mode. The column names come from the report file names.
  • The first DuckDB call includes loading the engine. The warm figure is the scan alone. The SQLite figure is the same aggregate on the engine every database already has.
  • Bootstrap per 100 MB scales the measured bootstrap linearly from the logical size in the footprint table. It expresses a rate. The run did not measure a 100 MB database.

The figures come from the internal performance suite of the release process. The suite is not public. It ran once for each column, with the settings in The run. The storage adapter read the bucket, endpoint and credentials from its environment.