github.com/square/finch@v0.0.0-20240412205204-6530c03e2b96/docs/content/_index.md (about)

     1  ---
     2  weight: 0
     3  ---
     4  
     5  # Finch
     6  
     7  Finch is a MySQL benchmark tool.
     8  Like most benchmark tools, it executes SQL statements, measures response time, and reports various statistics (QPS, min, max, P95).
     9  But _unlike_ most benchmark tools, Finch was developed for software engineers and modern infrastructures.
    10  
    11  ## 💡 Declarative
    12  
    13  Write benchmarks in SQL, not a scripting language.
    14  
    15  Let's say you're a developer who wants to know how the following transaction will perform on your database:
    16  
    17  ```sql
    18  BEGIN
    19  
    20  SELECT id FROM t WHERE user=?
    21  
    22  UPDATE t SET n=n+1 WHERE id=?
    23  
    24  COMMIT
    25  ```
    26  
    27  That's how you write the benchmark with Finch: with SQL.
    28  This allows developers (and DBAs) to write benchmarks easily—without knowing an additional scripting language or programming API.
    29  
    30  ## 💡 Workload Orchestration
    31  
    32  Normal benchmark tools execute all transactions, in all clients, all at once.
    33  
    34  ![Normal workload execution](/finch/img/normal_benchmark_workload.svg)
    35  
    36  But real workloads (the combination of queries, data, and access patterns) can be far more complex.
    37  Finch lets you orchestrate complex workloads.
    38  
    39  ![Finch workload shaping](/finch/img/finch_benchmark_workload.svg)
    40  
    41  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.
    42  Together, these client groups form execution group 1.
    43  When execution group 1 finishes, execution group 2 begins.
    44  Clients in client group 3 execute statements in transactions 2 and 1.
    45  
    46  Whether your benchmark workload is simple or complex, Finch can execute it.
    47  
    48  ## 💡 Distributed Compute
    49  
    50  A single Finch server can coordinate multiple Finch clients running on separate compute instances.
    51  
    52  ![Finch Distributed Compute](/finch/img/finch_compute.svg)
    53  
    54  This allows you to hammer the database like the application: from any number of compute instances.
    55  It's a benchmarking bot network—wield the power responsibly.
    56  
    57  ## 💡 Plug-in Stats
    58  
    59  Finch stats are reported through plugins.
    60  Don't like CSV?
    61  Write a little Go plugin and dump the Finch stats anywhere, anyway you want.
    62  Finch doesn't judge; it just works hard.
    63  
    64  ---
    65  
    66  {{< hint type=tip title="Read Next" >}}
    67  [Start Here]({{< relref "intro/start-here" >}}) to learn Finch by writing quick and simple benchmarks.
    68  {{< /hint >}}