- 196 → 0deadlocks in the same workload, after one index
- 6,752rows per second on average, peaking at 16,370
- 185 sto write 1,249,048 rows
Choosing the instrument before measuring
FAFO Core and Function Forge sends every database write in the estate through one governed write path, so when a bulk update slowed it, every producer slowed with it. Batches took up to two seconds, deadlocks came every few seconds, and the queue in front of the database reported healthy throughput. The queue counts rows taken in; only the database's tuple deltas count rows written.
The queue was the wrong instrument.
I had a benchmark harness built that samples the system through a controlled run and renders a before-and-after report.
One change between runs
The comparison pointed at a missing unique index on the update key of the target table, which pushed concurrent batches into colliding lock patterns. I changed that one thing: the index went in, concurrency and retry settings stayed as they were, and the same workload ran again, bulk-updating a cluster-health metrics table.
The full account is 196 deadlocks to zero.