Skip to content

perf(tpcc): report microsecond transaction latency - #381

Merged
KKould merged 4 commits into
mainfrom
perf/tpcc-microsecond-latency
Sep 6, 2026
Merged

perf(tpcc): report microsecond transaction latency#381
KKould merged 4 commits into
mainfrom
perf/tpcc-microsecond-latency

Conversation

@KKould

@KKould KKould commented Sep 6, 2026

Copy link
Copy Markdown
Member

What problem does this PR solve?

Millisecond buckets hide sub-millisecond transaction latency.

Issue link: N/A

What is changed and how it works?

Use microsecond HDR histograms, include commit in transaction latency, and update the runner parser and README tables.

Local run on 2026-09-06–2026-09-07: one warehouse, 720 seconds per backend. Latencies are in µs and include commit.

Backend TpmC New-Order p90 (µs) Payment p90 (µs) Order-Status p90 (µs) Delivery p90 (µs) Stock-Level p90 (µs)
KiteSQL LMDB 70315 561 196 208 1089 1693
KiteSQL RocksDB 35556 747 394 365 10175 2125
SQLite balanced 54797 303 72 52 363 508
SQLite practical 44847 527 146 61 1248 486

Stock-Level correction:

  • Consume all DISTINCT recent item IDs and query stock for each item, preserving the original multi-statement workload (not a JOIN rewrite).
  • Bind item IDs as Int32 and include district 10 in random selection.
  • Add full-row iteration to all backends; dual compares the complete unordered result multiset using the same SQL for both engines.

Code changes

  • Has Rust code change
  • Has CI related scripts change

Check List

Tests

  • Unit test

  • Integration test

  • Manual test (add detailed scripts or steps below)

  • No code

  • make test

  • ./scripts/run_tpcc_stable.py --build (four 720-second variants; SQLite practical resumed separately)

  • cargo fmt --all -- --check

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Note for reviewer

Benchmark output changes to µs and a table format; the Python parser is updated accordingly. Latencies now include commit and are not directly comparable to the old measurements. No SQL API changes.

@codecov

codecov Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.18%. Comparing base (156bb04) to head (4ed56fa).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #381      +/-   ##
==========================================
+ Coverage   93.07%   93.18%   +0.11%     
==========================================
  Files         257      257              
  Lines       45289    45852     +563     
==========================================
+ Hits        42152    42727     +575     
+ Misses       3137     3125      -12     
Flag Coverage Δ
rust 93.18% <ø> (+0.11%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 16 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@KKould
KKould merged commit 357cde1 into main Sep 6, 2026
10 checks passed
@KKould KKould added enhancement New feature or request test New test labels Sep 6, 2026
@KKould KKould self-assigned this Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request test New test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant