Finch is a MySQL benchmark tool. Like most benchmark tools, it executes SQL statements, measures response time, and reports various statistics (QPS, min, max, P95). But unlike most benchmark tools, Finch was developed for software engineers and modern infrastructures.
Write benchmarks in SQL, not a scripting language.
Let’s say you’re a developer who wants to know how the following transaction will perform on your database:
BEGIN
SELECT id FROM t WHERE user=?
UPDATE t SET n=n+1 WHERE id=?
COMMIT
That’s how you write the benchmark with Finch: with SQL. This allows developers (and DBAs) to write benchmarks easily—without knowing an additional scripting language or programming API.
Normal benchmark tools execute all transactions, in all clients, all at once.
But real workloads (the combination of queries, data, and access patterns) can be far more complex. Finch lets you orchestrate complex workloads.
In the diagram above, clients in client group 1 execute statements in transaction 3 while, concurrently, clients in client group 2 execute statements in transaction 2. Together, these client groups form execution group 1. When execution group 1 finishes, execution group 2 begins. Clients in client group 3 execute statements in transactions 2 and 1.
Whether your benchmark workload is simple or complex, Finch can execute it.
A single Finch server can coordinate multiple Finch clients running on separate compute instances.
This allows you to hammer the database like the application: from any number of compute instances. It’s a benchmarking bot network—wield the power responsibly.
Finch stats are reported through plugins. Don’t like CSV? Write a little Go plugin and dump the Finch stats anywhere, anyway you want. Finch doesn’t judge; it just works hard.
Start Here to learn Finch by writing quick and simple benchmarks.