Skip to content

Latest commit

History

History
39 lines (29 loc) 路 1.74 KB

README.md

File metadata and controls

39 lines (29 loc) 路 1.74 KB

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 bookkeeping.

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-native-tls
cargo bench --features runtime-async-std-rustls

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.