Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add database package #216

Merged
merged 4 commits into from
Jan 15, 2025
Merged

Add database package #216

merged 4 commits into from
Jan 15, 2025

Conversation

marco6
Copy link
Collaborator

@marco6 marco6 commented Jan 9, 2025

This PR moves the prepared package and the implementation of prepared to a dedicated and more generic database package, so that it is possible to add other wrappers that add functionality on the way.

This was part of #180 and was split out so that the PR is smaller, and other functionality can use the right interface even if batching is not merged yet.

This PR does not change functionality and should not affect performance in any way.

Also, there is a small difference from the original version of this code in #180: Wrap method is no longer required for this to work, instead NewPrepared accepts a generic interface and acts as the wrapper itself. If this PR gets in this change will be reflected in #180 as well.

@marco6 marco6 requested a review from a team as a code owner January 9, 2025 07:41
Copy link

github-actions bot commented Jan 9, 2025

Benchmark

Results
goos: linux
goarch: amd64
pkg: github.com/canonical/k8s-dqlite/test
cpu: AMD EPYC 7763 64-Core Processor                
                                        │    Before     │                After                 │
                                        │    sec/op     │    sec/op      vs base               │
Compaction/sqlite-4                       17.39µ ±  42%   25.02µ ±  32%        ~ (p=0.073 n=7)
Compaction/dqlite-4                       37.33µ ±  51%   57.68µ ±  37%  +54.49% (p=0.011 n=7)
Create/sqlite/1-workers-4                 439.0µ ±   2%   462.7µ ±   8%   +5.40% (p=0.001 n=7)
Create/sqlite/4-workers-4                 417.9µ ±   7%   441.1µ ±   4%   +5.55% (p=0.038 n=7)
Create/sqlite/16-workers-4                392.7µ ±   5%   405.9µ ±  18%        ~ (p=0.073 n=7)
Create/sqlite/64-workers-4                405.5µ ± 105%   483.3µ ±  20%        ~ (p=0.456 n=7)
Create/sqlite/128-workers-4               1.136m ± 308%   1.429m ± 135%        ~ (p=0.535 n=7)
Create/dqlite/1-workers-4                 895.3µ ±   2%   955.4µ ±   7%   +6.71% (p=0.001 n=7)
Create/dqlite/4-workers-4                 808.4µ ±   2%   848.9µ ±   3%   +5.01% (p=0.001 n=7)
Create/dqlite/16-workers-4                805.9µ ±   7%   847.9µ ±   4%   +5.21% (p=0.026 n=7)
Create/dqlite/64-workers-4                799.6µ ±   2%   843.2µ ±   1%   +5.46% (p=0.001 n=7)
Create/dqlite/128-workers-4               802.3µ ±   3%   843.2µ ±   2%   +5.10% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 422.1µ ±   1%   450.5µ ±   3%   +6.74% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 407.1µ ±   2%   432.6µ ±  10%   +6.27% (p=0.001 n=7)
Delete/sqlite/16-workers-4                377.3µ ±  13%   425.2µ ±   9%  +12.70% (p=0.004 n=7)
Delete/sqlite/64-workers-4                423.3µ ±  50%   451.2µ ± 313%        ~ (p=0.209 n=7)
Delete/sqlite/128-workers-4               615.1µ ±  93%   707.8µ ±  36%        ~ (p=0.805 n=7)
Delete/dqlite/1-workers-4                 921.4µ ±   4%   951.4µ ±   6%        ~ (p=0.073 n=7)
Delete/dqlite/4-workers-4                 793.5µ ±   7%   848.3µ ±   2%   +6.91% (p=0.002 n=7)
Delete/dqlite/16-workers-4                803.6µ ±   3%   848.7µ ±   3%   +5.62% (p=0.001 n=7)
Delete/dqlite/64-workers-4                816.6µ ±   2%   846.4µ ±   4%        ~ (p=0.053 n=7)
Delete/dqlite/128-workers-4               799.1µ ±   2%   847.7µ ±  12%   +6.08% (p=0.001 n=7)
Get/sqlite-4                              213.3µ ±   0%   217.6µ ±   1%   +1.98% (p=0.001 n=7)
Get/dqlite-4                              329.5µ ±   1%   335.3µ ±   1%   +1.74% (p=0.001 n=7)
List/sqlite-tiny/all-4                    3.188µ ±   5%   3.197µ ±   6%        ~ (p=0.902 n=7)
List/sqlite-tiny/pagination-4             4.587µ ±   2%   4.643µ ±   4%        ~ (p=0.535 n=7)
List/sqlite-fits-in-page/all-4            6.283µ ±   7%   6.253µ ±   5%        ~ (p=0.456 n=7)
List/sqlite-fits-in-page/pagination-4     16.55µ ±   4%   16.39µ ±   3%        ~ (p=0.259 n=7)
List/sqlite-overflows-page/all-4          15.02µ ±   2%   14.97µ ±   4%        ~ (p=0.902 n=7)
List/sqlite-overflows-page/pagination-4   18.70µ ±   8%   18.76µ ±   2%        ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                    2.030µ ±   2%   2.008µ ±   6%        ~ (p=0.364 n=7)
List/dqlite-tiny/pagination-4             3.137µ ±   7%   3.146µ ±   3%        ~ (p=0.275 n=7)
List/dqlite-fits-in-page/all-4            5.340µ ±   5%   5.295µ ±   3%        ~ (p=0.259 n=7)
List/dqlite-fits-in-page/pagination-4     11.70µ ±   4%   11.74µ ±   3%        ~ (p=0.596 n=7)
List/dqlite-overflows-page/all-4          18.69µ ±   4%   18.39µ ±   3%        ~ (p=0.535 n=7)
List/dqlite-overflows-page/pagination-4   22.96µ ±   1%   22.75µ ±   3%        ~ (p=0.401 n=7)
Update/sqlite/1-workers-4                 437.7µ ±   3%   453.0µ ±   3%   +3.49% (p=0.001 n=7)
Update/sqlite/4-workers-4                 419.0µ ±   6%   436.4µ ±   4%        ~ (p=0.053 n=7)
Update/sqlite/16-workers-4                391.0µ ±   5%   400.9µ ±   8%        ~ (p=0.456 n=7)
Update/sqlite/64-workers-4                426.9µ ± 407%   444.6µ ± 150%        ~ (p=0.805 n=7)
Update/sqlite/128-workers-4               1.171m ± 155%   1.758m ±  49%        ~ (p=0.128 n=7)
Update/dqlite/1-workers-4                 899.8µ ±   3%   886.6µ ±   3%        ~ (p=0.620 n=7)
Update/dqlite/4-workers-4                 805.3µ ±   2%   803.1µ ±   1%        ~ (p=0.805 n=7)
Update/dqlite/16-workers-4                800.3µ ±   3%   805.2µ ±   4%        ~ (p=1.000 n=7)
Update/dqlite/64-workers-4                817.4µ ±   1%   795.2µ ±   2%   -2.72% (p=0.001 n=7)
Update/dqlite/128-workers-4               814.9µ ±  10%   795.3µ ±   3%        ~ (p=0.259 n=7)
geomean                                   169.7µ          180.3µ          +6.25%

                                        │        Before        │                    After                     │
                                        │ page-cache-misses/op │ page-cache-misses/op  vs base                │
Compaction/sqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Compaction/dqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/sqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                      ²                         +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │        Before        │                    After                     │
                                        │ page-cache-spills/op │ page-cache-spills/op  vs base                │
Compaction/sqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Compaction/dqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/sqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                      ²                         +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │    Before     │                 After                 │
                                        │ page-reads/op │ page-reads/op  vs base                │
Compaction/sqlite-4                         12.23 ±  1%     12.23 ±  1%       ~ (p=0.396 n=7)
Compaction/dqlite-4                         12.25 ±  2%     12.11 ±  1%       ~ (p=0.057 n=7)
Create/sqlite/1-workers-4                   13.95 ±  0%     13.91 ±  0%  -0.29% (p=0.001 n=7)
Create/sqlite/4-workers-4                   12.58 ±  3%     12.39 ±  4%       ~ (p=0.383 n=7)
Create/sqlite/16-workers-4                  10.69 ±  4%     10.54 ±  6%       ~ (p=0.383 n=7)
Create/sqlite/64-workers-4                  9.035 ±  4%     9.057 ±  4%       ~ (p=0.620 n=7)
Create/sqlite/128-workers-4                 8.083 ± 23%     8.040 ± 19%       ~ (p=0.805 n=7)
Create/dqlite/1-workers-4                   13.16 ±  1%     13.35 ±  2%  +1.44% (p=0.007 n=7)
Create/dqlite/4-workers-4                   10.72 ±  1%     10.87 ±  1%  +1.40% (p=0.002 n=7)
Create/dqlite/16-workers-4                  10.83 ±  2%     11.01 ±  1%  +1.66% (p=0.001 n=7)
Create/dqlite/64-workers-4                  10.69 ±  3%     10.91 ±  1%  +2.06% (p=0.010 n=7)
Create/dqlite/128-workers-4                 10.79 ±  1%     10.97 ±  4%  +1.67% (p=0.006 n=7)
Delete/sqlite/1-workers-4                   16.21 ±  0%     16.22 ±  0%       ~ (p=0.122 n=7)
Delete/sqlite/4-workers-4                   14.65 ±  2%     14.62 ±  2%       ~ (p=0.456 n=7)
Delete/sqlite/16-workers-4                  12.32 ±  4%     12.23 ±  3%       ~ (p=0.646 n=7)
Delete/sqlite/64-workers-4                  10.08 ±  4%     10.10 ± 11%       ~ (p=0.303 n=7)
Delete/sqlite/128-workers-4                 9.612 ±  4%     9.640 ±  3%       ~ (p=0.710 n=7)
Delete/dqlite/1-workers-4                   15.45 ±  1%     15.67 ±  2%  +1.42% (p=0.001 n=7)
Delete/dqlite/4-workers-4                   13.07 ±  1%     13.32 ±  1%  +1.91% (p=0.002 n=7)
Delete/dqlite/16-workers-4                  13.08 ±  1%     13.34 ±  1%  +1.99% (p=0.001 n=7)
Delete/dqlite/64-workers-4                  12.94 ±  1%     13.08 ±  1%  +1.08% (p=0.033 n=7)
Delete/dqlite/128-workers-4                 12.74 ±  1%     13.03 ±  1%  +2.28% (p=0.001 n=7)
Get/sqlite-4                                14.96 ±  0%     14.95 ±  0%       ~ (p=0.694 n=7)
Get/dqlite-4                                11.97 ±  0%     11.96 ±  0%       ~ (p=0.633 n=7)
List/sqlite-tiny/all-4                     191.4m ±  0%    191.2m ±  0%       ~ (p=0.640 n=7)
List/sqlite-tiny/pagination-4               1.125 ±  0%     1.125 ±  3%       ~ (p=0.755 n=7)
List/sqlite-fits-in-page/all-4             258.6m ± 37%    260.0m ± 37%       ~ (p=0.779 n=7)
List/sqlite-fits-in-page/pagination-4      963.9m ±  0%    963.6m ±  0%       ~ (p=0.396 n=7)
List/sqlite-overflows-page/all-4           177.5m ±  0%    177.5m ±  0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4     1.065 ±  3%     1.065 ±  3%       ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                     190.4m ±  0%    190.2m ±  0%       ~ (p=0.119 n=7)
List/dqlite-tiny/pagination-4               1.124 ±  3%     1.124 ±  0%       ~ (p=0.690 n=7)
List/dqlite-fits-in-page/all-4             260.1m ± 37%    260.3m ± 37%       ~ (p=0.515 n=7)
List/dqlite-fits-in-page/pagination-4      954.5m ±  3%    955.1m ±  0%       ~ (p=0.559 n=7)
List/dqlite-overflows-page/all-4           184.8m ±  0%    184.7m ±  0%       ~ (p=0.300 n=7)
List/dqlite-overflows-page/pagination-4     1.074 ±  3%     1.073 ±  0%       ~ (p=0.592 n=7)
Update/sqlite/1-workers-4                   15.87 ±  0%     15.85 ±  0%  -0.13% (p=0.013 n=7)
Update/sqlite/4-workers-4                   14.72 ±  2%     14.44 ±  3%  -1.90% (p=0.034 n=7)
Update/sqlite/16-workers-4                  12.59 ±  3%     12.54 ±  5%       ~ (p=0.828 n=7)
Update/sqlite/64-workers-4                  11.09 ±  6%     10.82 ±  5%       ~ (p=0.209 n=7)
Update/sqlite/128-workers-4                10.220 ± 31%     9.664 ± 14%       ~ (p=0.259 n=7)
Update/dqlite/1-workers-4                   15.15 ±  1%     15.34 ±  1%  +1.25% (p=0.006 n=7)
Update/dqlite/4-workers-4                   12.62 ±  1%     12.82 ±  1%  +1.58% (p=0.001 n=7)
Update/dqlite/16-workers-4                  12.62 ±  2%     12.79 ±  1%  +1.35% (p=0.008 n=7)
Update/dqlite/64-workers-4                  12.34 ±  2%     12.72 ±  1%  +3.08% (p=0.001 n=7)
Update/dqlite/128-workers-4                 12.41 ±  1%     12.67 ±  1%  +2.10% (p=0.001 n=7)
geomean                                     5.223           5.235        +0.23%
¹ all samples are equal

                                        │     Before     │                 After                  │
                                        │ page-writes/op │ page-writes/op  vs base                │
Compaction/sqlite-4                        190.7m ± 0%        191.3m ± 0%       ~ (p=0.126 n=7)
Compaction/dqlite-4                        188.0m ± 1%        187.9m ± 0%       ~ (p=0.469 n=7)
Create/sqlite/1-workers-4                   4.369 ± 0%         4.360 ± 0%  -0.21% (p=0.001 n=7)
Create/sqlite/4-workers-4                   4.358 ± 1%         4.332 ± 1%       ~ (p=0.072 n=7)
Create/sqlite/16-workers-4                  4.306 ± 0%         4.280 ± 1%  -0.60% (p=0.034 n=7)
Create/sqlite/64-workers-4                  4.277 ± 1%         4.249 ± 1%       ~ (p=0.206 n=7)
Create/sqlite/128-workers-4                 4.140 ± 3%         4.080 ± 4%       ~ (p=0.710 n=7)
Create/dqlite/1-workers-4                   4.289 ± 0%         4.251 ± 1%       ~ (p=0.177 n=7)
Create/dqlite/4-workers-4                   4.321 ± 0%         4.313 ± 0%  -0.19% (p=0.015 n=7)
Create/dqlite/16-workers-4                  4.318 ± 0%         4.311 ± 0%  -0.16% (p=0.041 n=7)
Create/dqlite/64-workers-4                  4.310 ± 1%         4.315 ± 0%       ~ (p=0.689 n=7)
Create/dqlite/128-workers-4                 4.309 ± 0%         4.301 ± 1%       ~ (p=0.334 n=7)
Delete/sqlite/1-workers-4                   4.379 ± 0%         4.385 ± 0%       ~ (p=0.071 n=7)
Delete/sqlite/4-workers-4                   4.384 ± 1%         4.379 ± 1%       ~ (p=1.000 n=7)
Delete/sqlite/16-workers-4                  4.369 ± 1%         4.368 ± 1%       ~ (p=0.805 n=7)
Delete/sqlite/64-workers-4                  4.366 ± 1%         4.359 ± 2%       ~ (p=0.383 n=7)
Delete/sqlite/128-workers-4                 4.336 ± 1%         4.363 ± 1%       ~ (p=0.805 n=7)
Delete/dqlite/1-workers-4                   4.368 ± 1%         4.362 ± 1%       ~ (p=0.777 n=7)
Delete/dqlite/4-workers-4                   4.386 ± 0%         4.385 ± 1%       ~ (p=0.830 n=7)
Delete/dqlite/16-workers-4                  4.382 ± 1%         4.379 ± 0%       ~ (p=0.646 n=7)
Delete/dqlite/64-workers-4                  4.366 ± 1%         4.358 ± 1%       ~ (p=0.456 n=7)
Delete/dqlite/128-workers-4                 4.340 ± 1%         4.348 ± 0%       ~ (p=0.599 n=7)
Get/sqlite-4                                0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                      0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4               0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4              0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4       0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4            0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4     0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                      0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4               0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4              0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4       0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4            0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4     0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                   4.238 ± 0%         4.235 ± 0%       ~ (p=0.128 n=7)
Update/sqlite/4-workers-4                   4.322 ± 1%         4.321 ± 1%       ~ (p=0.436 n=7)
Update/sqlite/16-workers-4                  4.313 ± 0%         4.312 ± 1%       ~ (p=0.642 n=7)
Update/sqlite/64-workers-4                  4.284 ± 4%         4.296 ± 1%       ~ (p=0.477 n=7)
Update/sqlite/128-workers-4                 4.212 ± 4%         4.201 ± 3%       ~ (p=0.535 n=7)
Update/dqlite/1-workers-4                   4.204 ± 0%         4.207 ± 0%       ~ (p=0.074 n=7)
Update/dqlite/4-workers-4                   4.220 ± 1%         4.221 ± 0%       ~ (p=0.836 n=7)
Update/dqlite/16-workers-4                  4.238 ± 1%         4.245 ± 1%       ~ (p=0.318 n=7)
Update/dqlite/64-workers-4                  4.245 ± 1%         4.246 ± 1%       ~ (p=0.559 n=7)
Update/dqlite/128-workers-4                 4.262 ± 1%         4.254 ± 0%       ~ (p=0.902 n=7)
geomean                                                ²                   -0.09%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before     │                 After                  │
                                        │ sec-reading/op │ sec-reading/op  vs base                │
Compaction/sqlite-4                        22.40µ ±  58%     37.30µ ± 42%         ~ (p=0.053 n=7)
Compaction/dqlite-4                        9.300µ ± 259%    33.900µ ± 82%  +264.52% (p=0.016 n=7)
Create/sqlite/1-workers-4                  16.10µ ±  28%     14.50µ ± 36%         ~ (p=0.302 n=7)
Create/sqlite/4-workers-4                  13.80µ ±  31%     16.30µ ± 31%         ~ (p=0.155 n=7)
Create/sqlite/16-workers-4                 16.20µ ±  30%     15.30µ ± 30%         ~ (p=0.737 n=7)
Create/sqlite/64-workers-4                 15.50µ ±  43%     17.20µ ± 22%         ~ (p=1.000 n=7)
Create/sqlite/128-workers-4                23.40µ ±  44%     23.00µ ± 18%         ~ (p=1.000 n=7)
Create/dqlite/1-workers-4                 11.100µ ±  54%     9.600µ ± 32%         ~ (p=0.776 n=7)
Create/dqlite/4-workers-4                  12.70µ ±  29%     12.60µ ± 28%         ~ (p=0.685 n=7)
Create/dqlite/16-workers-4                 15.30µ ±  21%     13.60µ ± 50%         ~ (p=0.364 n=7)
Create/dqlite/64-workers-4                 15.60µ ±  33%     12.00µ ± 38%   -23.08% (p=0.008 n=7)
Create/dqlite/128-workers-4                11.90µ ±  36%     12.10µ ± 51%         ~ (p=0.594 n=7)
Delete/sqlite/1-workers-4                  26.20µ ±  13%     26.30µ ± 11%         ~ (p=0.620 n=7)
Delete/sqlite/4-workers-4                  28.30µ ±   9%     25.70µ ±  9%    -9.19% (p=0.008 n=7)
Delete/sqlite/16-workers-4                 27.00µ ±  16%     25.30µ ± 17%         ~ (p=0.364 n=7)
Delete/sqlite/64-workers-4                 30.00µ ±  20%     31.80µ ± 17%         ~ (p=0.383 n=7)
Delete/sqlite/128-workers-4                32.50µ ±  20%     32.90µ ± 43%         ~ (p=1.000 n=7)
Delete/dqlite/1-workers-4                  13.40µ ±  43%     12.20µ ± 43%         ~ (p=0.435 n=7)
Delete/dqlite/4-workers-4                  17.60µ ±  16%     14.10µ ± 26%   -19.89% (p=0.038 n=7)
Delete/dqlite/16-workers-4                 16.60µ ±  36%     15.40µ ± 23%         ~ (p=0.245 n=7)
Delete/dqlite/64-workers-4                 16.40µ ±  48%     14.60µ ± 51%         ~ (p=0.401 n=7)
Delete/dqlite/128-workers-4                17.90µ ±  44%     14.50µ ± 23%         ~ (p=0.364 n=7)
Get/sqlite-4                               56.20µ ±  11%     52.90µ ±  7%         ~ (p=0.073 n=7)
Get/dqlite-4                               34.40µ ±  11%     32.00µ ± 19%         ~ (p=0.401 n=7)
List/sqlite-tiny/all-4                     5.900µ ±  15%     5.700µ ± 14%         ~ (p=0.642 n=7)
List/sqlite-tiny/pagination-4              6.000µ ±  12%     6.500µ ± 14%         ~ (p=0.510 n=7)
List/sqlite-fits-in-page/all-4             10.50µ ±  15%     11.40µ ± 11%         ~ (p=0.515 n=7)
List/sqlite-fits-in-page/pagination-4      30.40µ ±   3%     30.70µ ±  7%         ~ (p=0.733 n=7)
List/sqlite-overflows-page/all-4           11.30µ ±   4%     11.20µ ±  3%         ~ (p=0.342 n=7)
List/sqlite-overflows-page/pagination-4    14.50µ ±  36%     14.60µ ± 10%         ~ (p=0.777 n=7)
List/dqlite-tiny/all-4                     2.600µ ±  23%     2.500µ ± 28%         ~ (p=0.137 n=7)
List/dqlite-tiny/pagination-4              3.400µ ±  59%     3.300µ ± 18%         ~ (p=0.278 n=7)
List/dqlite-fits-in-page/all-4             7.200µ ±  17%     8.200µ ± 20%         ~ (p=0.557 n=7)
List/dqlite-fits-in-page/pagination-4      16.60µ ±  12%     17.80µ ± 17%         ~ (p=0.221 n=7)
List/dqlite-overflows-page/all-4           29.70µ ±   2%     29.90µ ±  3%         ~ (p=0.469 n=7)
List/dqlite-overflows-page/pagination-4    36.30µ ±   4%     37.00µ ±  5%         ~ (p=0.363 n=7)
Update/sqlite/1-workers-4                  14.10µ ±  29%     14.00µ ± 28%         ~ (p=0.828 n=7)
Update/sqlite/4-workers-4                  15.00µ ±  27%     14.80µ ± 32%         ~ (p=0.781 n=7)
Update/sqlite/16-workers-4                 18.10µ ±  17%     16.30µ ± 31%         ~ (p=0.137 n=7)
Update/sqlite/64-workers-4                 16.40µ ±  63%     16.70µ ± 39%         ~ (p=0.805 n=7)
Update/sqlite/128-workers-4                20.30µ ±  54%     21.30µ ± 45%         ~ (p=0.644 n=7)
Update/dqlite/1-workers-4                 10.700µ ±  52%     7.800µ ± 81%         ~ (p=0.330 n=7)
Update/dqlite/4-workers-4                  11.10µ ±  59%     12.60µ ± 46%         ~ (p=0.927 n=7)
Update/dqlite/16-workers-4                 13.20µ ±  63%     12.40µ ± 62%         ~ (p=0.710 n=7)
Update/dqlite/64-workers-4                 13.40µ ±  24%     12.50µ ± 20%         ~ (p=0.732 n=7)
Update/dqlite/128-workers-4                6.700µ ±  78%    10.400µ ± 81%         ~ (p=0.155 n=7)
geomean                                    15.11µ            15.38µ          +1.74%

                                        │     Before      │                  After                  │
                                        │ sec-writing/op  │ sec-writing/op  vs base                 │
Compaction/sqlite-4                       9.600µ ±   3%      9.600µ ±   5%        ~ (p=0.650 n=7)
Compaction/dqlite-4                       6.600µ ±  11%      7.700µ ±   6%  +16.67% (p=0.003 n=7)
Create/sqlite/1-workers-4                 220.1µ ±   4%      243.1µ ±  14%  +10.45% (p=0.001 n=7)
Create/sqlite/4-workers-4                 1.305m ±  10%      1.355m ±   8%        ~ (p=0.165 n=7)
Create/sqlite/16-workers-4                4.851m ±   9%      4.947m ±   5%        ~ (p=0.209 n=7)
Create/sqlite/64-workers-4                16.61m ±  11%      17.89m ±   8%   +7.71% (p=0.016 n=7)
Create/sqlite/128-workers-4               40.93m ± 108%      48.92m ± 259%        ~ (p=0.259 n=7)
Create/dqlite/1-workers-4                 33.40µ ±  22%      38.10µ ±  23%        ~ (p=0.399 n=7)
Create/dqlite/4-workers-4                 32.40µ ±  25%      32.50µ ±  18%        ~ (p=0.902 n=7)
Create/dqlite/16-workers-4                34.90µ ±  13%      30.50µ ±  17%  -12.61% (p=0.029 n=7)
Create/dqlite/64-workers-4                31.60µ ±  31%      32.10µ ±  15%        ~ (p=0.931 n=7)
Create/dqlite/128-workers-4               34.00µ ±   9%      33.20µ ±  24%        ~ (p=0.805 n=7)
Delete/sqlite/1-workers-4                 209.6µ ±   5%      235.2µ ±   4%  +12.21% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 1.214m ±   7%      1.366m ±  13%  +12.52% (p=0.001 n=7)
Delete/sqlite/16-workers-4                4.696m ±   6%      5.150m ±   6%   +9.67% (p=0.007 n=7)
Delete/sqlite/64-workers-4                16.81m ±   8%      18.36m ±  82%   +9.22% (p=0.002 n=7)
Delete/sqlite/128-workers-4               32.72m ±  27%      33.59m ±   8%        ~ (p=0.301 n=7)
Delete/dqlite/1-workers-4                 38.20µ ±  17%      38.50µ ±  26%        ~ (p=0.805 n=7)
Delete/dqlite/4-workers-4                 32.30µ ±  19%      36.20µ ±  20%        ~ (p=0.128 n=7)
Delete/dqlite/16-workers-4                34.40µ ±  27%      33.00µ ±  26%        ~ (p=0.976 n=7)
Delete/dqlite/64-workers-4                30.80µ ±  40%      37.50µ ±  23%        ~ (p=0.833 n=7)
Delete/dqlite/128-workers-4               35.00µ ±  16%      36.50µ ±  24%        ~ (p=0.710 n=7)
Get/sqlite-4                               0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
Get/dqlite-4                               0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                     0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4              0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4             0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4      0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4           0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4    0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                     0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4              0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4             0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4      0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4           0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4    0.000 ±   0%       0.000 ±   0%        ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                 219.1µ ±   7%      226.3µ ±   6%   +3.29% (p=0.011 n=7)
Update/sqlite/4-workers-4                 1.304m ±   6%      1.318m ±   9%        ~ (p=0.512 n=7)
Update/sqlite/16-workers-4                4.841m ±   7%      4.657m ±  11%        ~ (p=0.535 n=7)
Update/sqlite/64-workers-4                16.46m ±  98%      16.86m ±  33%        ~ (p=0.535 n=7)
Update/sqlite/128-workers-4               42.37m ±  49%      49.87m ±  27%        ~ (p=0.128 n=7)
Update/dqlite/1-workers-4                 31.70µ ±  28%      33.90µ ±  12%        ~ (p=0.557 n=7)
Update/dqlite/4-workers-4                 33.90µ ±  19%      32.70µ ±  31%        ~ (p=0.932 n=7)
Update/dqlite/16-workers-4                32.20µ ±  21%      29.70µ ±  20%        ~ (p=0.383 n=7)
Update/dqlite/64-workers-4                32.40µ ±  28%      31.30µ ±  31%        ~ (p=1.000 n=7)
Update/dqlite/128-workers-4               33.30µ ±  25%      36.20µ ±  26%        ~ (p=0.456 n=7)
geomean                                                 ²                    +3.32%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before     │                After                 │
                                        │      B/op      │      B/op       vs base              │
Compaction/sqlite-4                       2.157Ki ±  38%    3.088Ki ± 32%       ~ (p=0.073 n=7)
Compaction/dqlite-4                       2.766Ki ± 311%   11.368Ki ± 87%       ~ (p=0.065 n=7)
Create/sqlite/1-workers-4                 20.39Ki ±   0%    20.23Ki ±  0%  -0.78% (p=0.001 n=7)
Create/sqlite/4-workers-4                 20.39Ki ±   0%    20.22Ki ±  0%  -0.82% (p=0.001 n=7)
Create/sqlite/16-workers-4                20.37Ki ±   0%    20.21Ki ±  0%  -0.78% (p=0.001 n=7)
Create/sqlite/64-workers-4                20.39Ki ±   1%    20.23Ki ±  0%  -0.79% (p=0.001 n=7)
Create/sqlite/128-workers-4               20.75Ki ±   3%    20.65Ki ±  2%       ~ (p=0.456 n=7)
Create/dqlite/1-workers-4                 19.65Ki ±   0%    19.50Ki ±  0%  -0.77% (p=0.001 n=7)
Create/dqlite/4-workers-4                 19.64Ki ±   0%    19.47Ki ±  0%  -0.84% (p=0.001 n=7)
Create/dqlite/16-workers-4                19.65Ki ±   0%    19.47Ki ±  0%  -0.88% (p=0.001 n=7)
Create/dqlite/64-workers-4                19.69Ki ±   0%    19.48Ki ±  0%  -1.09% (p=0.001 n=7)
Create/dqlite/128-workers-4               19.71Ki ±   0%    19.54Ki ±  0%  -0.84% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 22.81Ki ±   0%    22.66Ki ±  0%  -0.69% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 22.81Ki ±   0%    22.65Ki ±  0%  -0.69% (p=0.001 n=7)
Delete/sqlite/16-workers-4                22.79Ki ±   0%    22.63Ki ±  0%  -0.72% (p=0.001 n=7)
Delete/sqlite/64-workers-4                22.82Ki ±   0%    22.68Ki ±  1%       ~ (p=0.209 n=7)
Delete/sqlite/128-workers-4               22.94Ki ±   1%    22.78Ki ±  0%  -0.71% (p=0.011 n=7)
Delete/dqlite/1-workers-4                 21.91Ki ±   0%    21.75Ki ±  0%  -0.75% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 21.89Ki ±   0%    21.73Ki ±  0%  -0.75% (p=0.001 n=7)
Delete/dqlite/16-workers-4                21.90Ki ±   0%    21.74Ki ±  0%  -0.73% (p=0.001 n=7)
Delete/dqlite/64-workers-4                21.90Ki ±   7%    21.74Ki ±  7%       ~ (p=0.121 n=7)
Delete/dqlite/128-workers-4               21.92Ki ±   0%    21.75Ki ±  2%  -0.78% (p=0.001 n=7)
Get/sqlite-4                              23.01Ki ±   0%    22.84Ki ±  0%  -0.73% (p=0.001 n=7)
Get/dqlite-4                              21.96Ki ±   0%    21.79Ki ±  0%  -0.78% (p=0.001 n=7)
List/sqlite-tiny/all-4                    1.110Ki ±   5%    1.072Ki ± 10%       ~ (p=0.477 n=7)
List/sqlite-tiny/pagination-4              1014.0 ±   6%     1038.0 ±  6%       ~ (p=0.403 n=7)
List/sqlite-fits-in-page/all-4            7.000Ki ±  11%    7.380Ki ±  6%       ~ (p=0.383 n=7)
List/sqlite-fits-in-page/pagination-4     10.51Ki ±   5%    10.44Ki ±  6%       ~ (p=0.535 n=7)
List/sqlite-overflows-page/all-4          20.49Ki ±   0%    20.49Ki ± 12%       ~ (p=0.867 n=7)
List/sqlite-overflows-page/pagination-4   19.01Ki ±  18%    18.52Ki ±  8%       ~ (p=0.456 n=7)
List/dqlite-tiny/all-4                      953.0 ±   3%      943.0 ±  6%       ~ (p=0.197 n=7)
List/dqlite-tiny/pagination-4               830.0 ±  14%      819.0 ±  7%       ~ (p=0.620 n=7)
List/dqlite-fits-in-page/all-4            5.947Ki ±   9%    5.955Ki ±  8%       ~ (p=0.805 n=7)
List/dqlite-fits-in-page/pagination-4     5.733Ki ±   8%    5.733Ki ±  8%       ~ (p=0.831 n=7)
List/dqlite-overflows-page/all-4          30.82Ki ±   8%    30.61Ki ±  8%       ~ (p=0.318 n=7)
List/dqlite-overflows-page/pagination-4   32.35Ki ±   5%    32.11Ki ±  4%       ~ (p=0.535 n=7)
Update/sqlite/1-workers-4                 21.55Ki ±   0%    21.38Ki ±  0%  -0.77% (p=0.001 n=7)
Update/sqlite/4-workers-4                 21.54Ki ±   0%    21.38Ki ±  0%  -0.76% (p=0.001 n=7)
Update/sqlite/16-workers-4                21.54Ki ±   0%    21.36Ki ±  0%  -0.85% (p=0.001 n=7)
Update/sqlite/64-workers-4                21.55Ki ±   2%    21.38Ki ±  1%  -0.78% (p=0.004 n=7)
Update/sqlite/128-workers-4               21.76Ki ±   2%    21.66Ki ±  1%       ~ (p=0.128 n=7)
Update/dqlite/1-workers-4                 20.76Ki ±   0%    20.58Ki ±  0%  -0.86% (p=0.001 n=7)
Update/dqlite/4-workers-4                 20.74Ki ±   0%    20.56Ki ±  0%  -0.85% (p=0.001 n=7)
Update/dqlite/16-workers-4                20.75Ki ±   8%    20.57Ki ±  0%  -0.86% (p=0.026 n=7)
Update/dqlite/64-workers-4                20.73Ki ±   0%    20.60Ki ±  0%  -0.60% (p=0.001 n=7)
Update/dqlite/128-workers-4               20.70Ki ±  10%    20.57Ki ±  0%       ~ (p=0.688 n=7)
geomean                                   13.61Ki           14.06Ki        +3.32%

                                        │    Before    │                After                 │
                                        │  allocs/op   │  allocs/op    vs base                │
Compaction/sqlite-4                       46.00 ±  39%    66.00 ± 32%       ~ (p=0.058 n=7)
Compaction/dqlite-4                       66.00 ± 314%   272.00 ± 87%       ~ (p=0.068 n=7)
Create/sqlite/1-workers-4                 397.0 ±   0%    393.0 ±  0%  -1.01% (p=0.001 n=7)
Create/sqlite/4-workers-4                 397.0 ±   0%    393.0 ±  0%  -1.01% (p=0.001 n=7)
Create/sqlite/16-workers-4                397.0 ±   0%    393.0 ±  0%  -1.01% (p=0.001 n=7)
Create/sqlite/64-workers-4                397.0 ±   0%    393.0 ±  1%  -1.01% (p=0.001 n=7)
Create/sqlite/128-workers-4               401.0 ±   2%    397.0 ±  1%  -1.00% (p=0.020 n=7)
Create/dqlite/1-workers-4                 367.0 ±   0%    363.0 ±  0%  -1.09% (p=0.001 n=7)
Create/dqlite/4-workers-4                 367.0 ±   0%    363.0 ±  0%  -1.09% (p=0.001 n=7)
Create/dqlite/16-workers-4                367.0 ±   0%    363.0 ±  0%  -1.09% (p=0.001 n=7)
Create/dqlite/64-workers-4                367.0 ±   0%    363.0 ±  0%  -1.09% (p=0.001 n=7)
Create/dqlite/128-workers-4               366.0 ±   0%    362.0 ±  0%  -1.09% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 428.0 ±   0%    424.0 ±  0%  -0.93% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 428.0 ±   0%    424.0 ±  0%  -0.93% (p=0.001 n=7)
Delete/sqlite/16-workers-4                428.0 ±   0%    424.0 ±  0%  -0.93% (p=0.001 n=7)
Delete/sqlite/64-workers-4                427.0 ±   0%    424.0 ±  0%  -0.70% (p=0.001 n=7)
Delete/sqlite/128-workers-4               429.0 ±   1%    424.0 ±  0%  -1.17% (p=0.008 n=7)
Delete/dqlite/1-workers-4                 397.0 ±   0%    393.0 ±  0%  -1.01% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 397.0 ±   0%    393.0 ±  0%  -1.01% (p=0.001 n=7)
Delete/dqlite/16-workers-4                397.0 ±   0%    392.0 ±  0%  -1.26% (p=0.001 n=7)
Delete/dqlite/64-workers-4                396.0 ±  10%    392.0 ±  9%       ~ (p=0.079 n=7)
Delete/dqlite/128-workers-4               396.0 ±   0%    392.0 ±  3%  -1.01% (p=0.001 n=7)
Get/sqlite-4                              414.0 ±   0%    410.0 ±  0%  -0.97% (p=0.001 n=7)
Get/dqlite-4                              392.0 ±   0%    388.0 ±  0%  -1.02% (p=0.001 n=7)
List/sqlite-tiny/all-4                    15.00 ±  13%    15.00 ± 13%       ~ (p=0.995 n=7)
List/sqlite-tiny/pagination-4             12.00 ±   8%    13.00 ± 15%       ~ (p=0.598 n=7)
List/sqlite-fits-in-page/all-4            18.00 ±  17%    20.00 ± 10%       ~ (p=0.119 n=7)
List/sqlite-fits-in-page/pagination-4     37.00 ±   8%    36.00 ± 11%       ~ (p=0.172 n=7)
List/sqlite-overflows-page/all-4          8.000 ±   0%    8.000 ±  0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4   8.000 ±  38%    8.000 ± 12%       ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                    12.00 ±   8%    11.00 ±  9%       ~ (p=0.217 n=7)
List/dqlite-tiny/pagination-4             9.000 ±  33%    9.000 ± 11%       ~ (p=0.767 n=7)
List/dqlite-fits-in-page/all-4            18.00 ±   6%    18.00 ±  6%       ~ (p=1.000 n=7)
List/dqlite-fits-in-page/pagination-4     17.00 ±  12%    18.00 ± 17%       ~ (p=0.604 n=7)
List/dqlite-overflows-page/all-4          32.00 ±   6%    31.00 ±  6%       ~ (p=0.184 n=7)
List/dqlite-overflows-page/pagination-4   34.00 ±   6%    34.00 ±  3%       ~ (p=1.000 n=7)
Update/sqlite/1-workers-4                 404.0 ±   0%    400.0 ±  0%  -0.99% (p=0.001 n=7)
Update/sqlite/4-workers-4                 404.0 ±   0%    400.0 ±  0%  -0.99% (p=0.001 n=7)
Update/sqlite/16-workers-4                404.0 ±   0%    399.0 ±  0%  -1.24% (p=0.001 n=7)
Update/sqlite/64-workers-4                403.0 ±   0%    400.0 ±  0%  -0.74% (p=0.001 n=7)
Update/sqlite/128-workers-4               406.0 ±   1%    403.0 ±  0%  -0.74% (p=0.002 n=7)
Update/dqlite/1-workers-4                 374.0 ±   0%    370.0 ±  0%  -1.07% (p=0.001 n=7)
Update/dqlite/4-workers-4                 374.0 ±   0%    370.0 ±  0%  -1.07% (p=0.001 n=7)
Update/dqlite/16-workers-4                374.0 ±  10%    370.0 ±  0%  -1.07% (p=0.005 n=7)
Update/dqlite/64-workers-4                373.0 ±   0%    369.0 ±  0%  -1.07% (p=0.001 n=7)
Update/dqlite/128-workers-4               372.0 ±  13%    368.0 ±  0%       ~ (p=0.690 n=7)
geomean                                   156.9           162.2        +3.42%
¹ all samples are equal

                                        │        Before         │                     After                     │
                                        │ network-bytes-read/op │ network-bytes-read/op  vs base                │
Compaction/dqlite-4                               1005.0 ± 325%            4276.0 ± 87%  +325.47% (p=0.019 n=7)
Create/dqlite/1-workers-4                          242.1 ±   0%             241.3 ±  0%         ~ (p=0.067 n=7)
Create/dqlite/4-workers-4                          242.8 ±   0%             242.4 ±  0%    -0.16% (p=0.009 n=7)
Create/dqlite/16-workers-4                         242.8 ±   0%             242.5 ±  0%         ~ (p=0.121 n=7)
Create/dqlite/64-workers-4                         242.8 ±   0%             242.5 ±  0%    -0.12% (p=0.006 n=7)
Create/dqlite/128-workers-4                        242.8 ±   0%             242.5 ±  0%    -0.12% (p=0.002 n=7)
Delete/dqlite/1-workers-4                          719.5 ±   0%             718.6 ±  0%    -0.13% (p=0.023 n=7)
Delete/dqlite/4-workers-4                          720.8 ±   0%             720.3 ±  0%    -0.07% (p=0.024 n=7)
Delete/dqlite/16-workers-4                         720.9 ±   0%             720.0 ±  0%    -0.12% (p=0.006 n=7)
Delete/dqlite/64-workers-4                         720.7 ±   9%             719.4 ±  8%         ~ (p=0.332 n=7)
Delete/dqlite/128-workers-4                        720.9 ±   0%             720.2 ±  3%    -0.10% (p=0.001 n=7)
Get/dqlite-4                                       996.2 ±   0%             996.2 ±  0%         ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                             167.0 ±   6%             163.1 ± 14%         ~ (p=0.176 n=7)
List/dqlite-tiny/pagination-4                      132.0 ±  29%             123.7 ± 17%         ~ (p=0.535 n=7)
List/dqlite-fits-in-page/all-4                   1.309Ki ±   3%           1.310Ki ±  4%         ~ (p=0.825 n=7)
List/dqlite-fits-in-page/pagination-4            1.254Ki ±  14%           1.302Ki ± 15%         ~ (p=0.902 n=7)
List/dqlite-overflows-page/all-4                 7.276Ki ±   7%           7.180Ki ±  5%         ~ (p=0.128 n=7)
List/dqlite-overflows-page/pagination-4          7.979Ki ±   6%           7.872Ki ±  6%         ~ (p=0.620 n=7)
Update/dqlite/1-workers-4                          263.1 ±   0%             263.1 ±  0%         ~ (p=0.559 n=7)
Update/dqlite/4-workers-4                          263.2 ±   0%             263.2 ±  0%         ~ (p=0.290 n=7)
Update/dqlite/16-workers-4                         263.1 ±  25%             263.0 ±  0%         ~ (p=0.696 n=7)
Update/dqlite/64-workers-4                         262.6 ±   0%             262.6 ±  0%         ~ (p=0.927 n=7)
Update/dqlite/128-workers-4                        261.9 ±  32%             262.0 ±  0%         ~ (p=0.054 n=7)
geomean                                            530.9                    563.1          +6.07%

                                        │          Before          │                     After                      │
                                        │ network-bytes-written/op │ network-bytes-written/op  vs base              │
Compaction/dqlite-4                                    4.372 ± 25%                5.430 ± 27%       ~ (p=0.097 n=7)
Create/dqlite/1-workers-4                              116.8 ±  1%                115.8 ±  1%       ~ (p=0.068 n=7)
Create/dqlite/4-workers-4                              118.4 ±  0%                117.8 ±  1%       ~ (p=0.098 n=7)
Create/dqlite/16-workers-4                             118.5 ±  1%                118.1 ±  0%       ~ (p=0.069 n=7)
Create/dqlite/64-workers-4                             118.8 ±  0%                118.0 ±  1%  -0.67% (p=0.011 n=7)
Create/dqlite/128-workers-4                            118.6 ±  0%                118.1 ±  1%  -0.42% (p=0.009 n=7)
Delete/dqlite/1-workers-4                              83.09 ±  0%                82.74 ±  0%  -0.42% (p=0.026 n=7)
Delete/dqlite/4-workers-4                              83.68 ±  0%                83.45 ±  0%  -0.27% (p=0.024 n=7)
Delete/dqlite/16-workers-4                             83.69 ±  0%                83.29 ±  0%  -0.48% (p=0.005 n=7)
Delete/dqlite/64-workers-4                             83.65 ± 27%                83.07 ± 23%       ~ (p=0.336 n=7)
Delete/dqlite/128-workers-4                            83.69 ±  0%                83.41 ±  9%  -0.33% (p=0.001 n=7)
Get/dqlite-4                                           88.53 ±  0%                88.54 ±  0%       ~ (p=0.531 n=7)
List/dqlite-tiny/all-4                               0.03533 ± 11%              0.03406 ± 28%       ~ (p=0.259 n=7)
List/dqlite-tiny/pagination-4                        0.02511 ± 61%              0.02200 ± 46%       ~ (p=0.535 n=7)
List/dqlite-fits-in-page/all-4                       0.06012 ±  5%              0.06058 ±  8%       ~ (p=0.927 n=7)
List/dqlite-fits-in-page/pagination-4                0.06891 ± 15%              0.07024 ± 23%       ~ (p=1.000 n=7)
List/dqlite-overflows-page/all-4                     0.08180 ± 10%              0.08196 ±  5%       ~ (p=0.902 n=7)
List/dqlite-overflows-page/pagination-4               0.1094 ±  4%               0.1076 ±  5%       ~ (p=0.175 n=7)
Update/dqlite/1-workers-4                              136.8 ±  0%                136.8 ±  0%       ~ (p=1.000 n=7)
Update/dqlite/4-workers-4                              136.7 ±  0%                136.7 ±  0%   0.00% (p=0.041 n=7)
Update/dqlite/16-workers-4                             136.9 ± 15%                136.8 ±  0%       ~ (p=0.429 n=7)
Update/dqlite/64-workers-4                             136.6 ±  0%                137.1 ±  0%       ~ (p=0.592 n=7)
Update/dqlite/128-workers-4                            136.3 ± 21%                136.7 ±  0%  +0.29% (p=0.043 n=7)
geomean                                                13.18                      13.19        +0.07%
Current status
goos: linux
goarch: amd64
pkg: github.com/canonical/k8s-dqlite/test
cpu: AMD EPYC 7763 64-Core Processor                
                                        │     After     │
                                        │    sec/op     │
Compaction/sqlite-4                       25.02µ ±  32%
Compaction/dqlite-4                       57.68µ ±  37%
Create/sqlite/1-workers-4                 462.7µ ±   8%
Create/sqlite/4-workers-4                 441.1µ ±   4%
Create/sqlite/16-workers-4                405.9µ ±  18%
Create/sqlite/64-workers-4                483.3µ ±  20%
Create/sqlite/128-workers-4               1.429m ± 135%
Create/dqlite/1-workers-4                 955.4µ ±   7%
Create/dqlite/4-workers-4                 848.9µ ±   3%
Create/dqlite/16-workers-4                847.9µ ±   4%
Create/dqlite/64-workers-4                843.2µ ±   1%
Create/dqlite/128-workers-4               843.2µ ±   2%
Delete/sqlite/1-workers-4                 450.5µ ±   3%
Delete/sqlite/4-workers-4                 432.6µ ±  10%
Delete/sqlite/16-workers-4                425.2µ ±   9%
Delete/sqlite/64-workers-4                451.2µ ± 313%
Delete/sqlite/128-workers-4               707.8µ ±  36%
Delete/dqlite/1-workers-4                 951.4µ ±   6%
Delete/dqlite/4-workers-4                 848.3µ ±   2%
Delete/dqlite/16-workers-4                848.7µ ±   3%
Delete/dqlite/64-workers-4                846.4µ ±   4%
Delete/dqlite/128-workers-4               847.7µ ±  12%
Get/sqlite-4                              217.6µ ±   1%
Get/dqlite-4                              335.3µ ±   1%
List/sqlite-tiny/all-4                    3.197µ ±   6%
List/sqlite-tiny/pagination-4             4.643µ ±   4%
List/sqlite-fits-in-page/all-4            6.253µ ±   5%
List/sqlite-fits-in-page/pagination-4     16.39µ ±   3%
List/sqlite-overflows-page/all-4          14.97µ ±   4%
List/sqlite-overflows-page/pagination-4   18.76µ ±   2%
List/dqlite-tiny/all-4                    2.008µ ±   6%
List/dqlite-tiny/pagination-4             3.146µ ±   3%
List/dqlite-fits-in-page/all-4            5.295µ ±   3%
List/dqlite-fits-in-page/pagination-4     11.74µ ±   3%
List/dqlite-overflows-page/all-4          18.39µ ±   3%
List/dqlite-overflows-page/pagination-4   22.75µ ±   3%
Update/sqlite/1-workers-4                 453.0µ ±   3%
Update/sqlite/4-workers-4                 436.4µ ±   4%
Update/sqlite/16-workers-4                400.9µ ±   8%
Update/sqlite/64-workers-4                444.6µ ± 150%
Update/sqlite/128-workers-4               1.758m ±  49%
Update/dqlite/1-workers-4                 886.6µ ±   3%
Update/dqlite/4-workers-4                 803.1µ ±   1%
Update/dqlite/16-workers-4                805.2µ ±   4%
Update/dqlite/64-workers-4                795.2µ ±   2%
Update/dqlite/128-workers-4               795.3µ ±   3%
geomean                                   180.3µ

                                        │        After         │
                                        │ page-cache-misses/op │
Compaction/sqlite-4                               0.000 ± 0%
Compaction/dqlite-4                               0.000 ± 0%
Create/sqlite/1-workers-4                         0.000 ± 0%
Create/sqlite/4-workers-4                         0.000 ± 0%
Create/sqlite/16-workers-4                        0.000 ± 0%
Create/sqlite/64-workers-4                        0.000 ± 0%
Create/sqlite/128-workers-4                       0.000 ± 0%
Create/dqlite/1-workers-4                         0.000 ± 0%
Create/dqlite/4-workers-4                         0.000 ± 0%
Create/dqlite/16-workers-4                        0.000 ± 0%
Create/dqlite/64-workers-4                        0.000 ± 0%
Create/dqlite/128-workers-4                       0.000 ± 0%
Delete/sqlite/1-workers-4                         0.000 ± 0%
Delete/sqlite/4-workers-4                         0.000 ± 0%
Delete/sqlite/16-workers-4                        0.000 ± 0%
Delete/sqlite/64-workers-4                        0.000 ± 0%
Delete/sqlite/128-workers-4                       0.000 ± 0%
Delete/dqlite/1-workers-4                         0.000 ± 0%
Delete/dqlite/4-workers-4                         0.000 ± 0%
Delete/dqlite/16-workers-4                        0.000 ± 0%
Delete/dqlite/64-workers-4                        0.000 ± 0%
Delete/dqlite/128-workers-4                       0.000 ± 0%
Get/sqlite-4                                      0.000 ± 0%
Get/dqlite-4                                      0.000 ± 0%
List/sqlite-tiny/all-4                            0.000 ± 0%
List/sqlite-tiny/pagination-4                     0.000 ± 0%
List/sqlite-fits-in-page/all-4                    0.000 ± 0%
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%
List/sqlite-overflows-page/all-4                  0.000 ± 0%
List/sqlite-overflows-page/pagination-4           0.000 ± 0%
List/dqlite-tiny/all-4                            0.000 ± 0%
List/dqlite-tiny/pagination-4                     0.000 ± 0%
List/dqlite-fits-in-page/all-4                    0.000 ± 0%
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%
List/dqlite-overflows-page/all-4                  0.000 ± 0%
List/dqlite-overflows-page/pagination-4           0.000 ± 0%
Update/sqlite/1-workers-4                         0.000 ± 0%
Update/sqlite/4-workers-4                         0.000 ± 0%
Update/sqlite/16-workers-4                        0.000 ± 0%
Update/sqlite/64-workers-4                        0.000 ± 0%
Update/sqlite/128-workers-4                       0.000 ± 0%
Update/dqlite/1-workers-4                         0.000 ± 0%
Update/dqlite/4-workers-4                         0.000 ± 0%
Update/dqlite/16-workers-4                        0.000 ± 0%
Update/dqlite/64-workers-4                        0.000 ± 0%
Update/dqlite/128-workers-4                       0.000 ± 0%
geomean                                                      ¹
¹ summaries must be >0 to compute geomean

                                        │        After         │
                                        │ page-cache-spills/op │
Compaction/sqlite-4                               0.000 ± 0%
Compaction/dqlite-4                               0.000 ± 0%
Create/sqlite/1-workers-4                         0.000 ± 0%
Create/sqlite/4-workers-4                         0.000 ± 0%
Create/sqlite/16-workers-4                        0.000 ± 0%
Create/sqlite/64-workers-4                        0.000 ± 0%
Create/sqlite/128-workers-4                       0.000 ± 0%
Create/dqlite/1-workers-4                         0.000 ± 0%
Create/dqlite/4-workers-4                         0.000 ± 0%
Create/dqlite/16-workers-4                        0.000 ± 0%
Create/dqlite/64-workers-4                        0.000 ± 0%
Create/dqlite/128-workers-4                       0.000 ± 0%
Delete/sqlite/1-workers-4                         0.000 ± 0%
Delete/sqlite/4-workers-4                         0.000 ± 0%
Delete/sqlite/16-workers-4                        0.000 ± 0%
Delete/sqlite/64-workers-4                        0.000 ± 0%
Delete/sqlite/128-workers-4                       0.000 ± 0%
Delete/dqlite/1-workers-4                         0.000 ± 0%
Delete/dqlite/4-workers-4                         0.000 ± 0%
Delete/dqlite/16-workers-4                        0.000 ± 0%
Delete/dqlite/64-workers-4                        0.000 ± 0%
Delete/dqlite/128-workers-4                       0.000 ± 0%
Get/sqlite-4                                      0.000 ± 0%
Get/dqlite-4                                      0.000 ± 0%
List/sqlite-tiny/all-4                            0.000 ± 0%
List/sqlite-tiny/pagination-4                     0.000 ± 0%
List/sqlite-fits-in-page/all-4                    0.000 ± 0%
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%
List/sqlite-overflows-page/all-4                  0.000 ± 0%
List/sqlite-overflows-page/pagination-4           0.000 ± 0%
List/dqlite-tiny/all-4                            0.000 ± 0%
List/dqlite-tiny/pagination-4                     0.000 ± 0%
List/dqlite-fits-in-page/all-4                    0.000 ± 0%
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%
List/dqlite-overflows-page/all-4                  0.000 ± 0%
List/dqlite-overflows-page/pagination-4           0.000 ± 0%
Update/sqlite/1-workers-4                         0.000 ± 0%
Update/sqlite/4-workers-4                         0.000 ± 0%
Update/sqlite/16-workers-4                        0.000 ± 0%
Update/sqlite/64-workers-4                        0.000 ± 0%
Update/sqlite/128-workers-4                       0.000 ± 0%
Update/dqlite/1-workers-4                         0.000 ± 0%
Update/dqlite/4-workers-4                         0.000 ± 0%
Update/dqlite/16-workers-4                        0.000 ± 0%
Update/dqlite/64-workers-4                        0.000 ± 0%
Update/dqlite/128-workers-4                       0.000 ± 0%
geomean                                                      ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │ page-reads/op │
Compaction/sqlite-4                         12.23 ±  1%
Compaction/dqlite-4                         12.11 ±  1%
Create/sqlite/1-workers-4                   13.91 ±  0%
Create/sqlite/4-workers-4                   12.39 ±  4%
Create/sqlite/16-workers-4                  10.54 ±  6%
Create/sqlite/64-workers-4                  9.057 ±  4%
Create/sqlite/128-workers-4                 8.040 ± 19%
Create/dqlite/1-workers-4                   13.35 ±  2%
Create/dqlite/4-workers-4                   10.87 ±  1%
Create/dqlite/16-workers-4                  11.01 ±  1%
Create/dqlite/64-workers-4                  10.91 ±  1%
Create/dqlite/128-workers-4                 10.97 ±  4%
Delete/sqlite/1-workers-4                   16.22 ±  0%
Delete/sqlite/4-workers-4                   14.62 ±  2%
Delete/sqlite/16-workers-4                  12.23 ±  3%
Delete/sqlite/64-workers-4                  10.10 ± 11%
Delete/sqlite/128-workers-4                 9.640 ±  3%
Delete/dqlite/1-workers-4                   15.67 ±  2%
Delete/dqlite/4-workers-4                   13.32 ±  1%
Delete/dqlite/16-workers-4                  13.34 ±  1%
Delete/dqlite/64-workers-4                  13.08 ±  1%
Delete/dqlite/128-workers-4                 13.03 ±  1%
Get/sqlite-4                                14.95 ±  0%
Get/dqlite-4                                11.96 ±  0%
List/sqlite-tiny/all-4                     191.2m ±  0%
List/sqlite-tiny/pagination-4               1.125 ±  3%
List/sqlite-fits-in-page/all-4             260.0m ± 37%
List/sqlite-fits-in-page/pagination-4      963.6m ±  0%
List/sqlite-overflows-page/all-4           177.5m ±  0%
List/sqlite-overflows-page/pagination-4     1.065 ±  3%
List/dqlite-tiny/all-4                     190.2m ±  0%
List/dqlite-tiny/pagination-4               1.124 ±  0%
List/dqlite-fits-in-page/all-4             260.3m ± 37%
List/dqlite-fits-in-page/pagination-4      955.1m ±  0%
List/dqlite-overflows-page/all-4           184.7m ±  0%
List/dqlite-overflows-page/pagination-4     1.073 ±  0%
Update/sqlite/1-workers-4                   15.85 ±  0%
Update/sqlite/4-workers-4                   14.44 ±  3%
Update/sqlite/16-workers-4                  12.54 ±  5%
Update/sqlite/64-workers-4                  10.82 ±  5%
Update/sqlite/128-workers-4                 9.664 ± 14%
Update/dqlite/1-workers-4                   15.34 ±  1%
Update/dqlite/4-workers-4                   12.82 ±  1%
Update/dqlite/16-workers-4                  12.79 ±  1%
Update/dqlite/64-workers-4                  12.72 ±  1%
Update/dqlite/128-workers-4                 12.67 ±  1%
geomean                                     5.235

                                        │     After      │
                                        │ page-writes/op │
Compaction/sqlite-4                        191.3m ± 0%
Compaction/dqlite-4                        187.9m ± 0%
Create/sqlite/1-workers-4                   4.360 ± 0%
Create/sqlite/4-workers-4                   4.332 ± 1%
Create/sqlite/16-workers-4                  4.280 ± 1%
Create/sqlite/64-workers-4                  4.249 ± 1%
Create/sqlite/128-workers-4                 4.080 ± 4%
Create/dqlite/1-workers-4                   4.251 ± 1%
Create/dqlite/4-workers-4                   4.313 ± 0%
Create/dqlite/16-workers-4                  4.311 ± 0%
Create/dqlite/64-workers-4                  4.315 ± 0%
Create/dqlite/128-workers-4                 4.301 ± 1%
Delete/sqlite/1-workers-4                   4.385 ± 0%
Delete/sqlite/4-workers-4                   4.379 ± 1%
Delete/sqlite/16-workers-4                  4.368 ± 1%
Delete/sqlite/64-workers-4                  4.359 ± 2%
Delete/sqlite/128-workers-4                 4.363 ± 1%
Delete/dqlite/1-workers-4                   4.362 ± 1%
Delete/dqlite/4-workers-4                   4.385 ± 1%
Delete/dqlite/16-workers-4                  4.379 ± 0%
Delete/dqlite/64-workers-4                  4.358 ± 1%
Delete/dqlite/128-workers-4                 4.348 ± 0%
Get/sqlite-4                                0.000 ± 0%
Get/dqlite-4                                0.000 ± 0%
List/sqlite-tiny/all-4                      0.000 ± 0%
List/sqlite-tiny/pagination-4               0.000 ± 0%
List/sqlite-fits-in-page/all-4              0.000 ± 0%
List/sqlite-fits-in-page/pagination-4       0.000 ± 0%
List/sqlite-overflows-page/all-4            0.000 ± 0%
List/sqlite-overflows-page/pagination-4     0.000 ± 0%
List/dqlite-tiny/all-4                      0.000 ± 0%
List/dqlite-tiny/pagination-4               0.000 ± 0%
List/dqlite-fits-in-page/all-4              0.000 ± 0%
List/dqlite-fits-in-page/pagination-4       0.000 ± 0%
List/dqlite-overflows-page/all-4            0.000 ± 0%
List/dqlite-overflows-page/pagination-4     0.000 ± 0%
Update/sqlite/1-workers-4                   4.235 ± 0%
Update/sqlite/4-workers-4                   4.321 ± 1%
Update/sqlite/16-workers-4                  4.312 ± 1%
Update/sqlite/64-workers-4                  4.296 ± 1%
Update/sqlite/128-workers-4                 4.201 ± 3%
Update/dqlite/1-workers-4                   4.207 ± 0%
Update/dqlite/4-workers-4                   4.221 ± 0%
Update/dqlite/16-workers-4                  4.245 ± 1%
Update/dqlite/64-workers-4                  4.246 ± 1%
Update/dqlite/128-workers-4                 4.254 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After      │
                                        │ sec-reading/op │
Compaction/sqlite-4                         37.30µ ± 42%
Compaction/dqlite-4                         33.90µ ± 82%
Create/sqlite/1-workers-4                   14.50µ ± 36%
Create/sqlite/4-workers-4                   16.30µ ± 31%
Create/sqlite/16-workers-4                  15.30µ ± 30%
Create/sqlite/64-workers-4                  17.20µ ± 22%
Create/sqlite/128-workers-4                 23.00µ ± 18%
Create/dqlite/1-workers-4                   9.600µ ± 32%
Create/dqlite/4-workers-4                   12.60µ ± 28%
Create/dqlite/16-workers-4                  13.60µ ± 50%
Create/dqlite/64-workers-4                  12.00µ ± 38%
Create/dqlite/128-workers-4                 12.10µ ± 51%
Delete/sqlite/1-workers-4                   26.30µ ± 11%
Delete/sqlite/4-workers-4                   25.70µ ±  9%
Delete/sqlite/16-workers-4                  25.30µ ± 17%
Delete/sqlite/64-workers-4                  31.80µ ± 17%
Delete/sqlite/128-workers-4                 32.90µ ± 43%
Delete/dqlite/1-workers-4                   12.20µ ± 43%
Delete/dqlite/4-workers-4                   14.10µ ± 26%
Delete/dqlite/16-workers-4                  15.40µ ± 23%
Delete/dqlite/64-workers-4                  14.60µ ± 51%
Delete/dqlite/128-workers-4                 14.50µ ± 23%
Get/sqlite-4                                52.90µ ±  7%
Get/dqlite-4                                32.00µ ± 19%
List/sqlite-tiny/all-4                      5.700µ ± 14%
List/sqlite-tiny/pagination-4               6.500µ ± 14%
List/sqlite-fits-in-page/all-4              11.40µ ± 11%
List/sqlite-fits-in-page/pagination-4       30.70µ ±  7%
List/sqlite-overflows-page/all-4            11.20µ ±  3%
List/sqlite-overflows-page/pagination-4     14.60µ ± 10%
List/dqlite-tiny/all-4                      2.500µ ± 28%
List/dqlite-tiny/pagination-4               3.300µ ± 18%
List/dqlite-fits-in-page/all-4              8.200µ ± 20%
List/dqlite-fits-in-page/pagination-4       17.80µ ± 17%
List/dqlite-overflows-page/all-4            29.90µ ±  3%
List/dqlite-overflows-page/pagination-4     37.00µ ±  5%
Update/sqlite/1-workers-4                   14.00µ ± 28%
Update/sqlite/4-workers-4                   14.80µ ± 32%
Update/sqlite/16-workers-4                  16.30µ ± 31%
Update/sqlite/64-workers-4                  16.70µ ± 39%
Update/sqlite/128-workers-4                 21.30µ ± 45%
Update/dqlite/1-workers-4                   7.800µ ± 81%
Update/dqlite/4-workers-4                   12.60µ ± 46%
Update/dqlite/16-workers-4                  12.40µ ± 62%
Update/dqlite/64-workers-4                  12.50µ ± 20%
Update/dqlite/128-workers-4                 10.40µ ± 81%
geomean                                     15.38µ

                                        │      After      │
                                        │ sec-writing/op  │
Compaction/sqlite-4                       9.600µ ±   5%
Compaction/dqlite-4                       7.700µ ±   6%
Create/sqlite/1-workers-4                 243.1µ ±  14%
Create/sqlite/4-workers-4                 1.355m ±   8%
Create/sqlite/16-workers-4                4.947m ±   5%
Create/sqlite/64-workers-4                17.89m ±   8%
Create/sqlite/128-workers-4               48.92m ± 259%
Create/dqlite/1-workers-4                 38.10µ ±  23%
Create/dqlite/4-workers-4                 32.50µ ±  18%
Create/dqlite/16-workers-4                30.50µ ±  17%
Create/dqlite/64-workers-4                32.10µ ±  15%
Create/dqlite/128-workers-4               33.20µ ±  24%
Delete/sqlite/1-workers-4                 235.2µ ±   4%
Delete/sqlite/4-workers-4                 1.366m ±  13%
Delete/sqlite/16-workers-4                5.150m ±   6%
Delete/sqlite/64-workers-4                18.36m ±  82%
Delete/sqlite/128-workers-4               33.59m ±   8%
Delete/dqlite/1-workers-4                 38.50µ ±  26%
Delete/dqlite/4-workers-4                 36.20µ ±  20%
Delete/dqlite/16-workers-4                33.00µ ±  26%
Delete/dqlite/64-workers-4                37.50µ ±  23%
Delete/dqlite/128-workers-4               36.50µ ±  24%
Get/sqlite-4                               0.000 ±   0%
Get/dqlite-4                               0.000 ±   0%
List/sqlite-tiny/all-4                     0.000 ±   0%
List/sqlite-tiny/pagination-4              0.000 ±   0%
List/sqlite-fits-in-page/all-4             0.000 ±   0%
List/sqlite-fits-in-page/pagination-4      0.000 ±   0%
List/sqlite-overflows-page/all-4           0.000 ±   0%
List/sqlite-overflows-page/pagination-4    0.000 ±   0%
List/dqlite-tiny/all-4                     0.000 ±   0%
List/dqlite-tiny/pagination-4              0.000 ±   0%
List/dqlite-fits-in-page/all-4             0.000 ±   0%
List/dqlite-fits-in-page/pagination-4      0.000 ±   0%
List/dqlite-overflows-page/all-4           0.000 ±   0%
List/dqlite-overflows-page/pagination-4    0.000 ±   0%
Update/sqlite/1-workers-4                 226.3µ ±   6%
Update/sqlite/4-workers-4                 1.318m ±   9%
Update/sqlite/16-workers-4                4.657m ±  11%
Update/sqlite/64-workers-4                16.86m ±  33%
Update/sqlite/128-workers-4               49.87m ±  27%
Update/dqlite/1-workers-4                 33.90µ ±  12%
Update/dqlite/4-workers-4                 32.70µ ±  31%
Update/dqlite/16-workers-4                29.70µ ±  20%
Update/dqlite/64-workers-4                31.30µ ±  31%
Update/dqlite/128-workers-4               36.20µ ±  26%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │     B/op      │
Compaction/sqlite-4                       3.088Ki ± 32%
Compaction/dqlite-4                       11.37Ki ± 87%
Create/sqlite/1-workers-4                 20.23Ki ±  0%
Create/sqlite/4-workers-4                 20.22Ki ±  0%
Create/sqlite/16-workers-4                20.21Ki ±  0%
Create/sqlite/64-workers-4                20.23Ki ±  0%
Create/sqlite/128-workers-4               20.65Ki ±  2%
Create/dqlite/1-workers-4                 19.50Ki ±  0%
Create/dqlite/4-workers-4                 19.47Ki ±  0%
Create/dqlite/16-workers-4                19.47Ki ±  0%
Create/dqlite/64-workers-4                19.48Ki ±  0%
Create/dqlite/128-workers-4               19.54Ki ±  0%
Delete/sqlite/1-workers-4                 22.66Ki ±  0%
Delete/sqlite/4-workers-4                 22.65Ki ±  0%
Delete/sqlite/16-workers-4                22.63Ki ±  0%
Delete/sqlite/64-workers-4                22.68Ki ±  1%
Delete/sqlite/128-workers-4               22.78Ki ±  0%
Delete/dqlite/1-workers-4                 21.75Ki ±  0%
Delete/dqlite/4-workers-4                 21.73Ki ±  0%
Delete/dqlite/16-workers-4                21.74Ki ±  0%
Delete/dqlite/64-workers-4                21.74Ki ±  7%
Delete/dqlite/128-workers-4               21.75Ki ±  2%
Get/sqlite-4                              22.84Ki ±  0%
Get/dqlite-4                              21.79Ki ±  0%
List/sqlite-tiny/all-4                    1.072Ki ± 10%
List/sqlite-tiny/pagination-4             1.014Ki ±  6%
List/sqlite-fits-in-page/all-4            7.380Ki ±  6%
List/sqlite-fits-in-page/pagination-4     10.44Ki ±  6%
List/sqlite-overflows-page/all-4          20.49Ki ± 12%
List/sqlite-overflows-page/pagination-4   18.52Ki ±  8%
List/dqlite-tiny/all-4                      943.0 ±  6%
List/dqlite-tiny/pagination-4               819.0 ±  7%
List/dqlite-fits-in-page/all-4            5.955Ki ±  8%
List/dqlite-fits-in-page/pagination-4     5.733Ki ±  8%
List/dqlite-overflows-page/all-4          30.61Ki ±  8%
List/dqlite-overflows-page/pagination-4   32.11Ki ±  4%
Update/sqlite/1-workers-4                 21.38Ki ±  0%
Update/sqlite/4-workers-4                 21.38Ki ±  0%
Update/sqlite/16-workers-4                21.36Ki ±  0%
Update/sqlite/64-workers-4                21.38Ki ±  1%
Update/sqlite/128-workers-4               21.66Ki ±  1%
Update/dqlite/1-workers-4                 20.58Ki ±  0%
Update/dqlite/4-workers-4                 20.56Ki ±  0%
Update/dqlite/16-workers-4                20.57Ki ±  0%
Update/dqlite/64-workers-4                20.60Ki ±  0%
Update/dqlite/128-workers-4               20.57Ki ±  0%
geomean                                   14.06Ki

                                        │    After    │
                                        │  allocs/op  │
Compaction/sqlite-4                       66.00 ± 32%
Compaction/dqlite-4                       272.0 ± 87%
Create/sqlite/1-workers-4                 393.0 ±  0%
Create/sqlite/4-workers-4                 393.0 ±  0%
Create/sqlite/16-workers-4                393.0 ±  0%
Create/sqlite/64-workers-4                393.0 ±  1%
Create/sqlite/128-workers-4               397.0 ±  1%
Create/dqlite/1-workers-4                 363.0 ±  0%
Create/dqlite/4-workers-4                 363.0 ±  0%
Create/dqlite/16-workers-4                363.0 ±  0%
Create/dqlite/64-workers-4                363.0 ±  0%
Create/dqlite/128-workers-4               362.0 ±  0%
Delete/sqlite/1-workers-4                 424.0 ±  0%
Delete/sqlite/4-workers-4                 424.0 ±  0%
Delete/sqlite/16-workers-4                424.0 ±  0%
Delete/sqlite/64-workers-4                424.0 ±  0%
Delete/sqlite/128-workers-4               424.0 ±  0%
Delete/dqlite/1-workers-4                 393.0 ±  0%
Delete/dqlite/4-workers-4                 393.0 ±  0%
Delete/dqlite/16-workers-4                392.0 ±  0%
Delete/dqlite/64-workers-4                392.0 ±  9%
Delete/dqlite/128-workers-4               392.0 ±  3%
Get/sqlite-4                              410.0 ±  0%
Get/dqlite-4                              388.0 ±  0%
List/sqlite-tiny/all-4                    15.00 ± 13%
List/sqlite-tiny/pagination-4             13.00 ± 15%
List/sqlite-fits-in-page/all-4            20.00 ± 10%
List/sqlite-fits-in-page/pagination-4     36.00 ± 11%
List/sqlite-overflows-page/all-4          8.000 ±  0%
List/sqlite-overflows-page/pagination-4   8.000 ± 12%
List/dqlite-tiny/all-4                    11.00 ±  9%
List/dqlite-tiny/pagination-4             9.000 ± 11%
List/dqlite-fits-in-page/all-4            18.00 ±  6%
List/dqlite-fits-in-page/pagination-4     18.00 ± 17%
List/dqlite-overflows-page/all-4          31.00 ±  6%
List/dqlite-overflows-page/pagination-4   34.00 ±  3%
Update/sqlite/1-workers-4                 400.0 ±  0%
Update/sqlite/4-workers-4                 400.0 ±  0%
Update/sqlite/16-workers-4                399.0 ±  0%
Update/sqlite/64-workers-4                400.0 ±  0%
Update/sqlite/128-workers-4               403.0 ±  0%
Update/dqlite/1-workers-4                 370.0 ±  0%
Update/dqlite/4-workers-4                 370.0 ±  0%
Update/dqlite/16-workers-4                370.0 ±  0%
Update/dqlite/64-workers-4                369.0 ±  0%
Update/dqlite/128-workers-4               368.0 ±  0%
geomean                                   162.2

                                        │         After         │
                                        │ network-bytes-read/op │
Compaction/dqlite-4                               4.176Ki ± 87%
Create/dqlite/1-workers-4                           241.3 ±  0%
Create/dqlite/4-workers-4                           242.4 ±  0%
Create/dqlite/16-workers-4                          242.5 ±  0%
Create/dqlite/64-workers-4                          242.5 ±  0%
Create/dqlite/128-workers-4                         242.5 ±  0%
Delete/dqlite/1-workers-4                           718.6 ±  0%
Delete/dqlite/4-workers-4                           720.3 ±  0%
Delete/dqlite/16-workers-4                          720.0 ±  0%
Delete/dqlite/64-workers-4                          719.4 ±  8%
Delete/dqlite/128-workers-4                         720.2 ±  3%
Get/dqlite-4                                        996.2 ±  0%
List/dqlite-tiny/all-4                              163.1 ± 14%
List/dqlite-tiny/pagination-4                       123.7 ± 17%
List/dqlite-fits-in-page/all-4                    1.310Ki ±  4%
List/dqlite-fits-in-page/pagination-4             1.302Ki ± 15%
List/dqlite-overflows-page/all-4                  7.180Ki ±  5%
List/dqlite-overflows-page/pagination-4           7.872Ki ±  6%
Update/dqlite/1-workers-4                           263.1 ±  0%
Update/dqlite/4-workers-4                           263.2 ±  0%
Update/dqlite/16-workers-4                          263.0 ±  0%
Update/dqlite/64-workers-4                          262.6 ±  0%
Update/dqlite/128-workers-4                         262.0 ±  0%
geomean                                             563.1

                                        │          After           │
                                        │ network-bytes-written/op │
Compaction/dqlite-4                                    5.430 ± 27%
Create/dqlite/1-workers-4                              115.8 ±  1%
Create/dqlite/4-workers-4                              117.8 ±  1%
Create/dqlite/16-workers-4                             118.1 ±  0%
Create/dqlite/64-workers-4                             118.0 ±  1%
Create/dqlite/128-workers-4                            118.1 ±  1%
Delete/dqlite/1-workers-4                              82.74 ±  0%
Delete/dqlite/4-workers-4                              83.45 ±  0%
Delete/dqlite/16-workers-4                             83.29 ±  0%
Delete/dqlite/64-workers-4                             83.07 ± 23%
Delete/dqlite/128-workers-4                            83.41 ±  9%
Get/dqlite-4                                           88.54 ±  0%
List/dqlite-tiny/all-4                               0.03406 ± 28%
List/dqlite-tiny/pagination-4                        0.02200 ± 46%
List/dqlite-fits-in-page/all-4                       0.06058 ±  8%
List/dqlite-fits-in-page/pagination-4                0.07024 ± 23%
List/dqlite-overflows-page/all-4                     0.08196 ±  5%
List/dqlite-overflows-page/pagination-4               0.1076 ±  5%
Update/dqlite/1-workers-4                              136.8 ±  0%
Update/dqlite/4-workers-4                              136.7 ±  0%
Update/dqlite/16-workers-4                             136.8 ±  0%
Update/dqlite/64-workers-4                             137.1 ±  0%
Update/dqlite/128-workers-4                            136.7 ±  0%
geomean                                                13.19

Copy link
Contributor

@louiseschmidtgen louiseschmidtgen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work Marco! I love the direction this is going. This helps code readability greatly.
I've left some first questions and comments.

pkg/database/interface.go Show resolved Hide resolved
pkg/database/prepared.go Outdated Show resolved Hide resolved
pkg/database/prepared_test.go Outdated Show resolved Hide resolved
pkg/database/prepared_test.go Outdated Show resolved Hide resolved
pkg/database/prepared_test.go Show resolved Hide resolved
pkg/database/prepared_test.go Show resolved Hide resolved
pkg/database/prepared_test.go Outdated Show resolved Hide resolved
pkg/database/prepared_test.go Show resolved Hide resolved
pkg/database/prepared_test.go Outdated Show resolved Hide resolved
pkg/database/prepared_test.go Outdated Show resolved Hide resolved
@marco6 marco6 force-pushed the KU-1749/new-database-package branch from 91ebeac to 13de1f1 Compare January 13, 2025 10:59
Copy link
Contributor

@louiseschmidtgen louiseschmidtgen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, a few minor questions and comments:

pkg/database/driver_test.go Show resolved Hide resolved
pkg/database/interface.go Outdated Show resolved Hide resolved
pkg/database/interface.go Show resolved Hide resolved
pkg/database/prepared.go Outdated Show resolved Hide resolved
pkg/database/prepared.go Outdated Show resolved Hide resolved
pkg/database/prepared.go Outdated Show resolved Hide resolved
Copy link
Contributor

@louiseschmidtgen louiseschmidtgen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work Marco! Thanks for addressing my comments 🚀

@marco6 marco6 merged commit 2c4e7b6 into master Jan 15, 2025
8 checks passed
@marco6 marco6 deleted the KU-1749/new-database-package branch January 15, 2025 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants