YDB includes TPC-C implementation as part of its CLI. It follows the exact same logic as the BenchBase-based implementation but requires orders of magnitude less RAM on the client side. It also supports all available authentication schemes, features a built-in TUI, and offers a more polished user experience overall.
We strongly recommend using implementation provided with the CLI. See the YDB CLI installation guide for setup instructions.
This is a fork of BenchBase, with the following enhancements:
- Added support for YDB (TPC-C only).
- Fixed some performance issues in the original benchbase to speed up the benchmark.
- To address issues with running high number of warehouses, we added support for virtual threads (requires Java >= 21).
- Significantly reduced the memory footprint of the benchmark.
Short decriptions of branches:
- main - the BenchBase with YDB support.
- vanilla - the original BenchBase with performance enhancements, including c3p0 as a connection pool for PostgreSQL.
Minumum requirements for running the benchmark against YDB:
- 2 cores and 4 GB RAM (for 100 warehouses)
- 4 cores and 6 GB RAM (for 1000 warehouses)
Above 1000 warehouses, the memory and CPU consumption grow linearly, you need:
- 1 core per 1000 warehouses
- 6 MB RAM per warehouse
E.g. to run 10000 warehouses you need to have at least 10 cores and 64 GB RAM. However, Instead of running 10000 warehouses on a single instance (and machine), we recommend to run at most 5000 warehouses per instance (preferably on separate machines).
To reduce memory consumption, make sure you don't use huge pages or transparent huge pages.
Prebuilt packages:
To build the benchmark you need Java >= 21. This project depends on the development version of ydb-jdbc-driver:
- Clone the ydb-jdbc-driver repository.
- Build and install the ydb-jdbc-driver:
mvn clean install -DskipTests
Next, to build the benchbase-ydb package, execute the following command:
./mvnw clean package -P ydb -DskipTests
The simplest way is to use helper scripts from benchhelpers. You can find the full instruction here.
Here you can find description of the authentication. Usually you will either use anonymous authentication in case of self deployed YDB, or provide a service account key file using the saFile=file:
jdbc url parameter in tpcc_config_template.xml, when run managed YDB.
Please refer to this repository.