Benchmarking
Due to Skytable having in-house implementations of almost everything, starting from the protocol, the storage engine and query
language — we have our own custom load testing tool called sky-bench
that is distributed with the bundle.
Setting up for benchmarking
Quick notes:
- The benchmark tool will create:
- a space called
bench
- a model called
bench
- a space called
- Be sure that these objects don't already exist! But don't worry, if they do — the benchmark tool will error. You won't lose any data
- Once the benchmark is complete, the
bench
space is removed! - Do not use the
bench
space during the benchmark: You might lose data
The benchmark tool will:
- Run a total of 4,000,000 queries (don't worry, they run pretty fast!):
- Run 1,000,000
INSERT
s - Run 1,000,000
SELECT
s - Run 1,000,000
UPDATE
s - Run 1,000,000
DELETE
s
- Run 1,000,000
- The model used has the declaration
(un: string, pw: uint8)
- The
SELECT
will select and return all fields - The
UPDATE
will increment the value ofpw
like thispw += 1
- The
DELETE
removes the entire collection - The default primary key size is 7 bytes. All generated keys will be padded with zeros from to 0 to 999,999 like this:
0000000
or0999999
Off to the races
- Start up the database server
- Run
./sky-bench --password <your root password>
. We need yourroot
password because only the root account can create, alter and drop models and the benchmark tool needs to run these queries - Wait for it to happen. You may not believe your eyes, so we recommend that you keep your eyes hydrated 🔥🚀✨💣