sqlx/sqlx-bench
2020-07-14 06:33:36 -07:00
..
benches fix some remaining usage of PoolOptions 2020-07-14 06:33:36 -07:00
results/2020-07-01-bench_pgpool_acquire perf: document sqlx-bench and pool fairness benchmark 2020-07-03 05:59:20 -07:00
Cargo.toml perf: implement pool benchmark, make fairness an option 2020-07-03 05:59:20 -07:00
README.md fix: adjust pool usage in tests and examples 2020-07-12 04:42:48 -07:00

SQLx Self-Benchmarks

This Cargo project implements various benchmarks for SQLx using Criterion.

Available Benchmarks

  • Group pg_pool: benchmarks sqlx::Pool against a PostgreSQL server.
    • DATABASE_URL must be set (or in .env) pointing to a PostgreSQL server. It should preferably be running on the same machine as the benchmarks to reduce latency.
    • The postgres feature must be enabled for this benchmark to run.
    • Benchmarks:
      • bench_pgpool_acquire: benchmarks Pool::acquire() when many concurrent tasks are also using the pool, with or without the pool being fair. Concurrently to the benchmark iteration function calling and blocking on Pool::acquire(), a varying number of background tasks are also calling acquire() and holding the acquired connection for 500µs each before releasing it back to the pool. The pool is created with .min_connections(50).max_connections(50) so we shouldn't be measuring anything but the actual overhead of Pool's bookeeping.

Running

You must choose a runtime to execute the benchmarks on; the feature flags are the same as the sqlx crate:

cargo bench --features runtime-tokio
cargo bench --features runtime-async-std

When complete, the benchmark results will be in target/criterion/. Open target/criterion/report/index.html or pick one of the benchmark subfolders and open report/index.html there to view the results.

Benchmark Results

If you want to share the results here, please follow the format below.