mix exograph.bench.backends (exograph v0.8.1)

Copy Markdown View Source

Benchmarks Exograph indexing and query speed across Postgres and DuckDB using the same Hex.pm package workload.

mix exograph.bench.backends --mode top --limit 20 --iterations 10
mix exograph.bench.backends --mode top --limit 100 --runs 3 --order random --output-json bench.json
mix exograph.bench.backends --mode top --limit 20 --concurrency 4 --duckdb-threads 1
mix exograph.bench.backends --mode top --limit 20 --duckdb-shards 4 --duckdb-threads 1
mix exograph.bench.backends --mode top --limit 100 --duckdb-shards 8 --duckdb-threads 1 --duckdb-recovery-mode no_wal_writes --postgres-maintenance-work-mem 1GB --postgres-max-parallel-maintenance-workers 4 --postgres-copy --postgres-unlogged --postgres-defer-indexes --postgres-synchronous-commit off --only postgres_plain,duckdb_plain,duckdb_sharded_plain --order random --append-metrics --output-json bench.json

Required services:

  • Postgres: EXOGRAPH_DATABASE_URL or --database-url
  • DuckDB: QUACKDB_URI / QUACKDB_TEST_URI or --quackdb-uri
  • Sharded DuckDB starts managed QuackDB servers and can use --duckdb-recovery-mode no_wal_writes
  • --only can restrict variants, for example postgres_plain,duckdb_plain,duckdb_sharded_plain
  • Prefixes are dropped after each run by default; use --keep-prefixes to inspect tables manually.
  • --explain-dir path writes Postgres EXPLAIN (ANALYZE, BUFFERS) plans before cleanup.

The benchmark uses fresh prefixes and reports separate plain and BM25 variants: postgres_plain, postgres_bm25, duckdb_plain, and duckdb_bm25.

Summary

Functions

handle_quackdb_telemetry(arg1, measurements, metadata, agent)