sqlx/sqlx-bench/README.md
Kian-Meng Ang d52f301a94
Fix typos (#1894)
* Fix typos

* Update CHANGELOG.md

Co-authored-by: Austin Bonander <austin.bonander@gmail.com>

Co-authored-by: Austin Bonander <austin.bonander@gmail.com>
2022-06-08 14:56:56 -07:00

40 lines
1.7 KiB
Markdown

SQLx Self-Benchmarks
====================
This Cargo project implements various benchmarks for SQLx using
[Criterion](https://crates.io/crates/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:
```bash
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.
* [2020/07/01: `pg_pool` benchmark added to test pool fairness changes](results/2020-07-01-bench_pgpool_acquire/REPORT.md)