Pekka Enberg
d5c49c17c7
perf/throughput: Delete database before benchmark run
...
Let's reduce variance between benchmark runs by starting with an empty
database.
2025-10-07 09:57:08 +03:00
Avinash Sajjanshetty
36d4b09830
Use the updated bindings for encryption throughput tests
2025-10-02 19:04:15 +05:30
Pekka Enberg
981a762fd7
Merge 'Improve throughput benchmarks' from Pekka Enberg
...
Closes #3493
2025-10-01 15:24:03 +03:00
Pekka Enberg
51f4f1fb8b
perf/throughput: Add plotting scripts
...
This adds few helper scripts to plot throughput results.
2025-10-01 14:08:26 +03:00
Pekka Enberg
3fcb0581ec
perf/throughput: Fix thread pool size in Turso benchmark
...
Replace #[tokio::main] with explicit Runtime builder to set the number
of tokio worker threads to match the benchmark thread count. This
ensures proper thread control and avoids interference from default
tokio thread pool sizing.
2025-10-01 14:08:26 +03:00
Pekka Enberg
63895dfecd
perf/throughput: Simplify benchmark output to CSV format
...
Remove verbose output from rusqlite benchmark and output only CSV
format: system,threads,batch_size,compute,throughput
This makes it easier to parse and plot benchmark results.
2025-10-01 11:06:27 +03:00
Pekka Enberg
eeb14b25c6
perf/throughput: Replace think time with CPU-bound compute time
...
Replace the sleep-based --think parameter with a --compute parameter
that uses a busy loop to simulate realistic CPU or GPU bound business
logic (e.g., parsing, data aggregation, or ML inference). The compute
time is now specified in microseconds instead of milliseconds for
finer granularity.
2025-10-01 11:06:27 +03:00
Jussi Saurio
d2863dd62f
Merge 'Measure read/write latencies in encryption benchmarks' from Avinash Sajjanshetty
...
Closes #3354
2025-10-01 08:58:11 +03:00
Avinash Sajjanshetty
a360efa6e0
enable encryption feature flag by default
2025-09-30 19:04:25 +05:30
Avinash Sajjanshetty
6236dab923
mesaure read/write latencies
2025-09-29 21:58:09 +05:30
Jussi Saurio
045b11b255
bench/tpc-h: don't fail build if query 1 has output difference (known floating point precision issue)
2025-09-26 16:02:37 +03:00
Jussi Saurio
a783f82470
bench/tpch: remove "cast('yyyy-mm-dd' as datetime)"
...
this causes sqlite and tursodb to interpret the value as just 'yyyy',
e.g. '1995-01-01' becomes '1995', causing a lot of the queries not to
return any results, which is not what we want.
2025-09-26 15:55:38 +03:00
TcMits
17c91c1fe2
resolve conflicts
2025-09-22 16:03:52 +07:00
Avinash Sajjanshetty
0597ea722a
Add encryption throughput test
2025-09-20 21:56:58 +05:30
Pere Diaz Bou
ff3c79d5d7
remove mvvmode and set logical log as default
2025-09-18 18:22:25 +02:00
Pere Diaz Bou
0e5b0fe8c4
perf/throughput/turso: add io option
2025-09-18 18:22:06 +02:00
Pere Diaz Bou
ba798076a0
perf/throughput/turso: add env-filter
2025-09-18 18:22:06 +02:00
Pere Diaz Bou
91c04133e9
perf/throughput/turso: allow logical log benchmark
2025-09-18 18:22:06 +02:00
Pere Diaz Bou
9b35c6efb6
rust/lib: expose mvccmode
2025-09-18 18:21:21 +02:00
Pere Diaz Bou
de8a975a0b
core/mvcc: introduce MvccMode Logical Log
2025-09-18 18:21:04 +02:00
TcMits
96e4c5d241
fix issue 3144
2025-09-16 18:39:45 +07:00
pedrocarlo
3c91ae206b
move as many dependencies as possible to workspace to avoid multiple versions of the same dependency
2025-09-15 17:19:36 -03:00
Jussi Saurio
26c0d72c25
perf/thrpt: add tracing
2025-09-15 14:25:18 +03:00
Pekka Enberg
dd06d2eb99
Merge 'add perf/throughput/rusqlite to workspace' from Pedro Muniz
...
Closes #3116
2025-09-15 14:24:13 +03:00
Pekka Enberg
877b28bcb3
perf/throughput/turso: Use 30 second busy timeout like in rusqlite
2025-09-15 13:57:58 +03:00
pedrocarlo
bd5dcd8d3c
add timeout flag to throughput benchmark
2025-09-15 02:20:32 -03:00
pedrocarlo
3d265489dc
modify semantics of busy_timeout to be more on par with sqlite
2025-09-15 02:20:32 -03:00
pedrocarlo
0586b75fbe
expose function to set busy timeout duration
2025-09-15 02:20:32 -03:00
pedrocarlo
16e79ed508
slight adjustment in perf throughtput printing
2025-09-15 02:16:18 -03:00
pedrocarlo
cc48fa233b
add perf/throughput/rusqlite to workspace
2025-09-14 18:29:03 -03:00
pedrocarlo
01a99f84a6
add perf/throughput/turso to workspace
2025-09-14 16:19:34 -03:00
Pekka Enberg
76a3c20a48
Merge 'perf/throughput/turso: Don't use spawn_blocking()' from Pekka Enberg
...
Let's just use normal spawn()
Reviewed-by: Preston Thorpe <preston@turso.tech >
Closes #3096
2025-09-14 17:55:44 +03:00
Pekka Enberg
a5f1bdbc9d
Merge 'perf/throughput/turso: Don't interleave concurrent transactions in on…' from Pekka Enberg
...
…e connection
With BEGIN CONCURRENT, we cannot use the same connection all the time
because there's no way for the transaction manager to know which
transaction belongs to what "session" -- they're all individual
statements executed in the context of the one connection.
Fixes #3093
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #3094
2025-09-14 11:33:20 +03:00
Pekka Enberg
ed8b02d83e
perf/throughput/turso: Don't use spawn_blocking()
...
Let's just use normal spawn()
2025-09-14 11:32:17 +03:00
Pekka Enberg
6e9ba4c561
perf/throughput/turso: Don't interleave concurrent transactions in one connection
...
With BEGIN CONCURRENT, we cannot use the same connection all the time
because there's no way for the transaction manager to know which
transaction belongs to what "session" -- they're all individual
statements executed in the context of the one connection.
Fixes #3093
2025-09-14 10:52:56 +03:00
Pekka Enberg
98af9386e2
perf/throughput/turso: Don't execute futures serially
...
Looping through the futures means we're essentially executing them
serially.
2025-09-14 10:07:21 +03:00
Pekka Enberg
0fad30a30d
perf/throughput/turso: Async transactions with concurrent mode
...
With `BEGIN CONCURRENT`, we should also take advantage of async
transaction processing to maximize concurrency.
2025-09-13 13:25:16 +03:00
Pekka Enberg
8dc2e738a4
core/throughput: Add per transaction think time support
2025-09-13 13:02:43 +03:00
Pekka Enberg
964dd0cd43
perf: Add simple throughput benchmark
...
This adds a simple throughput benchmark for rusqlite and Turso, allowing
to compare the two, but also MVCC and SQLite transactions.
2025-09-12 07:35:57 +03:00
Jussi Saurio
e65742e5ff
Fail CI if tursodb output differs from sqlite in tpc-h queries
2025-08-26 11:30:37 +03:00
Jussi Saurio
87bf488bbc
chore: use rusqlite 0.37 with bundled sqlite everywhere
2025-08-11 15:13:57 +03:00
Jussi Saurio
51f2aad7a4
perf/clickbench: enable rest of queries since we support DISTINCT and REGEXP_REPLACE
2025-08-11 11:32:37 +03:00
Jussi Saurio
86b1232268
chore: enable indexes by default
2025-08-01 15:44:56 +03:00
Glauber Costa
5a66ed8433
measure only the time it takes to open the actual connection
...
The current code includes creating the database object, which is slow.
Unfortunately the same cannot be done on the standard SQLite.
2025-07-23 08:41:36 -05:00
Jussi Saurio
78320464ce
test/clickbench: fix clickbench
...
- enable indexes, otherwise it doesnt work at all
- rename limbo to tursodb
- use mode=list instead of mode=pretty for less bulky tursodb results
2025-07-21 12:00:04 +03:00
Jussi Saurio
cc47bfba02
CSV import fixes
...
- Fix not being able to create table while importing
* The behavior now aligns with SQLite so that if the table already
exists, all the rows are treated as data. If the table doesn't exist,
the first row is treated as the header from which column names for the
new table are populated.
- Insert in batches instead of one at a time
2025-07-15 16:44:11 +03:00
Jussi Saurio
f312227825
uv run ruff format && uv run ruff check --fix
2025-07-09 10:06:29 +03:00
Pekka Enberg
b895381ae6
Revert "Merge 'Reachable assertions in Antithesis Python Test for better logging' from Pedro Muniz"
...
This reverts commit dbbc3f5190 , reversing
changes made to 1cd5a49705 . We're missing
some mandatory parameters, causing these to fail under Antithesis.
2025-07-08 17:51:12 +03:00
pedrocarlo
e9361c0eba
add more logging to antithesis tests
...
format python tests
2025-07-07 19:11:55 -03:00
Glauber Costa
471a95bd96
add a benchmark for connection time versus number of tables
...
SQLite performs poorly for connections as the number of tables increase.
Do we perform better? the same? worse?
Right now the answer is worse. Add a benchmark to help us compare.
2025-07-01 20:10:21 -05:00