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

Improve list query #140

Draft
wants to merge 44 commits into
base: master
Choose a base branch
from
Draft

Improve list query #140

wants to merge 44 commits into from

Conversation

marco6
Copy link
Collaborator

@marco6 marco6 commented Jul 22, 2024

This PR changes slightly the index to make it covering when querying for latest rows.

It also changes the List query (and all those related to the same index) so that it is possible to exploit better the properties of this updated index. While doing that, it removes a redundant query.

@marco6
Copy link
Collaborator Author

marco6 commented Jul 22, 2024

Depends on #136, #132 and #131 .

@marco6
Copy link
Collaborator Author

marco6 commented Jul 24, 2024

This PR also depends on #141

Copy link

github-actions bot commented Jul 24, 2024

Benchmark Result

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                        20.94µ ±    5%   20.87µ ±  3%        ~ (p=0.620 n=7)
Compaction/dqlite-4                        41.39µ ±    7%   41.49µ ±  2%        ~ (p=1.000 n=7)
Create/sqlite/1-workers-4                  526.8µ ±    3%   522.8µ ±  7%        ~ (p=0.383 n=7)
Create/sqlite/4-workers-4                  502.5µ ±    4%   179.5µ ±  4%  -64.27% (p=0.001 n=7)
Create/sqlite/16-workers-4                467.04µ ±   16%   82.65µ ±  3%  -82.30% (p=0.001 n=7)
Create/sqlite/64-workers-4                538.35µ ±  308%   48.85µ ±  4%  -90.93% (p=0.001 n=7)
Create/sqlite/128-workers-4               533.18µ ±  119%   43.17µ ±  5%  -91.90% (p=0.001 n=7)
Create/dqlite/1-workers-4                  1.123m ±    5%   1.122m ±  3%        ~ (p=0.456 n=7)
Create/dqlite/4-workers-4                  994.3µ ±    4%   623.2µ ± 10%  -37.32% (p=0.001 n=7)
Create/dqlite/16-workers-4                 991.2µ ±    3%   244.3µ ±  5%  -75.35% (p=0.001 n=7)
Create/dqlite/64-workers-4                 990.3µ ±    1%   148.0µ ±  2%  -85.06% (p=0.001 n=7)
Create/dqlite/128-workers-4               1002.4µ ±    2%   128.2µ ±  3%  -87.21% (p=0.001 n=7)
Delete/sqlite/1-workers-4                  514.5µ ±    9%   523.7µ ±  5%        ~ (p=0.128 n=7)
Delete/sqlite/4-workers-4                  487.3µ ±    3%   181.8µ ±  1%  -62.69% (p=0.001 n=7)
Delete/sqlite/16-workers-4                457.88µ ±    7%   83.65µ ±  5%  -81.73% (p=0.001 n=7)
Delete/sqlite/64-workers-4                521.22µ ± 2126%   55.05µ ±  4%  -89.44% (p=0.001 n=7)
Delete/sqlite/128-workers-4               600.08µ ±  214%   47.33µ ±  3%  -92.11% (p=0.001 n=7)
Delete/dqlite/1-workers-4                  1.140m ±    7%   1.117m ±  1%   -2.02% (p=0.004 n=7)
Delete/dqlite/4-workers-4                  996.8µ ±    4%   618.2µ ±  6%  -37.98% (p=0.001 n=7)
Delete/dqlite/16-workers-4                 999.5µ ±    3%   249.0µ ±  2%  -75.09% (p=0.001 n=7)
Delete/dqlite/64-workers-4                1002.1µ ±    6%   150.2µ ±  4%  -85.02% (p=0.001 n=7)
Delete/dqlite/128-workers-4               1002.4µ ±    2%   136.4µ ±  3%  -86.39% (p=0.001 n=7)
Get/sqlite-4                               253.4µ ±    1%   222.1µ ±  2%  -12.37% (p=0.001 n=7)
Get/dqlite-4                               372.8µ ±    1%   344.8µ ±  1%   -7.53% (p=0.001 n=7)
List/sqlite-tiny/all-4                     4.012µ ±    3%   3.238µ ±  2%  -19.29% (p=0.001 n=7)
List/sqlite-tiny/pagination-4              8.466µ ±    2%   4.751µ ±  4%  -43.88% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4             8.118µ ±    4%   5.200µ ±  7%  -35.94% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4     23.493µ ±    3%   7.050µ ±  6%  -69.99% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           18.07µ ±    4%   11.53µ ±  6%  -36.21% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4    47.10µ ±    8%   12.54µ ±  8%  -73.38% (p=0.001 n=7)
List/dqlite-tiny/all-4                     2.985µ ±   16%   2.227µ ± 14%  -25.39% (p=0.001 n=7)
List/dqlite-tiny/pagination-4              6.181µ ±    3%   3.332µ ±  5%  -46.09% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4             7.067µ ±    5%   5.400µ ± 16%  -23.59% (p=0.001 n=7)
List/dqlite-fits-in-page/pagination-4     18.180µ ±    3%   6.279µ ± 16%  -65.46% (p=0.001 n=7)
List/dqlite-overflows-page/all-4           23.64µ ±    4%   15.14µ ± 13%  -35.93% (p=0.001 n=7)
List/dqlite-overflows-page/pagination-4    48.40µ ±    3%   16.25µ ±  4%  -66.43% (p=0.001 n=7)
Update/sqlite/1-workers-4                  526.1µ ±    4%   535.6µ ±  3%        ~ (p=0.535 n=7)
Update/sqlite/4-workers-4                  506.8µ ±    5%   193.9µ ±  2%  -61.74% (p=0.001 n=7)
Update/sqlite/16-workers-4                466.60µ ±    4%   91.23µ ±  3%  -80.45% (p=0.001 n=7)
Update/sqlite/64-workers-4                557.82µ ±   25%   58.83µ ±  2%  -89.45% (p=0.001 n=7)
Update/sqlite/128-workers-4               858.36µ ±  705%   51.96µ ±  2%  -93.95% (p=0.001 n=7)
Update/dqlite/1-workers-4                  1.106m ±    3%   1.121m ±  8%        ~ (p=0.535 n=7)
Update/dqlite/4-workers-4                  988.9µ ±    5%   597.4µ ±  7%  -39.59% (p=0.001 n=7)
Update/dqlite/16-workers-4                 972.5µ ±    3%   273.1µ ±  4%  -71.92% (p=0.001 n=7)
Update/dqlite/64-workers-4                1005.6µ ±    7%   165.2µ ±  7%  -83.57% (p=0.001 n=7)
Update/dqlite/128-workers-4               1012.7µ ±   10%   144.5µ ±  3%  -85.73% (p=0.001 n=7)
geomean                                    213.0µ           74.86µ        -64.85%

                                        │        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.24 ±  1%     12.24 ±  2%        ~ (p=0.976 n=7)
Compaction/dqlite-4                         12.31 ±  2%     12.21 ±  1%        ~ (p=0.371 n=7)
Create/sqlite/1-workers-4                   13.85 ±  0%     13.86 ±  0%        ~ (p=0.473 n=7)
Create/sqlite/4-workers-4                   12.42 ±  3%     10.60 ±  1%  -14.65% (p=0.001 n=7)
Create/sqlite/16-workers-4                  10.69 ±  7%     10.43 ±  0%   -2.43% (p=0.001 n=7)
Create/sqlite/64-workers-4                  8.721 ±  6%    10.350 ±  0%  +18.68% (p=0.001 n=7)
Create/sqlite/128-workers-4                 8.139 ±  5%    10.330 ±  0%  +26.92% (p=0.001 n=7)
Create/dqlite/1-workers-4                   13.51 ±  1%     13.80 ±  1%   +2.15% (p=0.001 n=7)
Create/dqlite/4-workers-4                   11.08 ±  1%     10.93 ±  1%   -1.35% (p=0.001 n=7)
Create/dqlite/16-workers-4                  11.21 ±  1%     10.44 ±  0%   -6.87% (p=0.001 n=7)
Create/dqlite/64-workers-4                  11.21 ±  1%     10.34 ±  0%   -7.76% (p=0.001 n=7)
Create/dqlite/128-workers-4                 11.18 ±  2%     10.33 ±  0%   -7.60% (p=0.001 n=7)
Delete/sqlite/1-workers-4                   16.23 ±  0%     16.26 ±  0%   +0.18% (p=0.004 n=7)
Delete/sqlite/4-workers-4                   14.39 ±  2%     13.41 ±  1%   -6.81% (p=0.001 n=7)
Delete/sqlite/16-workers-4                  11.90 ±  6%     16.27 ±  1%  +36.72% (p=0.001 n=7)
Delete/sqlite/64-workers-4                  9.927 ± 31%    17.230 ±  0%  +73.57% (p=0.001 n=7)
Delete/sqlite/128-workers-4                 9.475 ±  5%    17.210 ±  0%  +81.64% (p=0.001 n=7)
Delete/dqlite/1-workers-4                   16.16 ±  1%     16.29 ±  1%   +0.80% (p=0.002 n=7)
Delete/dqlite/4-workers-4                   13.69 ±  1%     13.24 ±  0%   -3.29% (p=0.001 n=7)
Delete/dqlite/16-workers-4                  13.74 ±  2%     12.49 ±  0%   -9.10% (p=0.001 n=7)
Delete/dqlite/64-workers-4                  13.62 ±  1%     13.92 ±  3%   +2.20% (p=0.001 n=7)
Delete/dqlite/128-workers-4                 13.61 ±  1%     14.26 ±  1%   +4.78% (p=0.001 n=7)
Get/sqlite-4                                14.95 ±  0%     16.99 ± 24%        ~ (p=0.194 n=7)
Get/dqlite-4                                11.96 ±  0%     12.98 ±  0%   +8.53% (p=0.001 n=7)
List/sqlite-tiny/all-4                     191.2m ±  1%    189.8m ±  1%        ~ (p=0.053 n=7)
List/sqlite-tiny/pagination-4             1131.0m ±  0%    194.6m ±  0%  -82.79% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4             164.5m ±  1%    163.3m ±  0%   -0.73% (p=0.004 n=7)
List/sqlite-fits-in-page/pagination-4      965.6m ±  3%    165.6m ±  0%  -82.85% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           177.1m ±  0%    182.0m ±  2%   +2.77% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   1887.0m ± 44%    182.9m ±  2%  -90.31% (p=0.001 n=7)
List/dqlite-tiny/all-4                     191.5m ±  1%    190.6m ±  1%   -0.47% (p=0.022 n=7)
List/dqlite-tiny/pagination-4             1126.0m ±  3%    191.9m ±  0%  -82.96% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4             164.0m ±  0%    164.5m ±  1%   +0.30% (p=0.048 n=7)
List/dqlite-fits-in-page/pagination-4      955.2m ±  0%    165.1m ±  2%  -82.72% (p=0.001 n=7)
List/dqlite-overflows-page/all-4           184.5m ±  0%    184.4m ±  1%        ~ (p=0.510 n=7)
List/dqlite-overflows-page/pagination-4   1071.0m ±  3%    186.1m ±  1%  -82.62% (p=0.001 n=7)
Update/sqlite/1-workers-4                   15.80 ±  0%     16.07 ±  0%   +1.71% (p=0.001 n=7)
Update/sqlite/4-workers-4                   14.52 ±  3%     12.61 ±  0%  -13.15% (p=0.001 n=7)
Update/sqlite/16-workers-4                  12.29 ±  6%     12.38 ±  0%        ~ (p=0.681 n=7)
Update/sqlite/64-workers-4                  11.02 ±  4%     12.25 ±  0%  +11.16% (p=0.001 n=7)
Update/sqlite/128-workers-4                 10.37 ± 10%     12.26 ±  0%  +18.23% (p=0.001 n=7)
Update/dqlite/1-workers-4                   15.64 ±  1%     15.86 ±  1%   +1.41% (p=0.001 n=7)
Update/dqlite/4-workers-4                   12.95 ±  1%     12.87 ±  1%   -0.62% (p=0.015 n=7)
Update/dqlite/16-workers-4                  13.08 ±  1%     12.33 ±  0%   -5.73% (p=0.001 n=7)
Update/dqlite/64-workers-4                  13.32 ±  3%     12.22 ±  0%   -8.26% (p=0.001 n=7)
Update/dqlite/128-workers-4                 13.24 ±  6%     12.20 ±  0%   -7.85% (p=0.001 n=7)
geomean                                     5.243           4.252        -18.90%

                                        │     Before      │                  After                  │
                                        │ page-writes/op  │ page-writes/op  vs base                 │
Compaction/sqlite-4                        190.2m ±  0%       191.4m ±  0%   +0.63% (p=0.002 n=7)
Compaction/dqlite-4                        187.7m ±  1%       188.3m ±  0%   +0.32% (p=0.016 n=7)
Create/sqlite/1-workers-4                   4.356 ±  0%        4.357 ±  0%        ~ (p=0.555 n=7)
Create/sqlite/4-workers-4                   4.324 ±  1%        2.614 ±  2%  -39.55% (p=0.001 n=7)
Create/sqlite/16-workers-4                4291.0m ±  1%       954.1m ±  4%  -77.77% (p=0.001 n=7)
Create/sqlite/64-workers-4                4236.0m ±  5%       438.7m ±  6%  -89.64% (p=0.001 n=7)
Create/sqlite/128-workers-4               4223.0m ±  2%       315.7m ± 12%  -92.52% (p=0.001 n=7)
Create/dqlite/1-workers-4                   4.216 ±  1%        4.242 ±  1%        ~ (p=0.060 n=7)
Create/dqlite/4-workers-4                   4.283 ±  1%        2.339 ±  1%  -45.39% (p=0.001 n=7)
Create/dqlite/16-workers-4                4285.0m ±  0%       812.7m ±  4%  -81.03% (p=0.001 n=7)
Create/dqlite/64-workers-4                4290.0m ±  0%       309.6m ±  7%  -92.78% (p=0.001 n=7)
Create/dqlite/128-workers-4               4301.0m ±  1%       177.0m ±  7%  -95.88% (p=0.001 n=7)
Delete/sqlite/1-workers-4                   4.396 ±  0%        4.411 ±  0%   +0.34% (p=0.007 n=7)
Delete/sqlite/4-workers-4                   4.370 ±  1%        2.591 ±  1%  -40.71% (p=0.001 n=7)
Delete/sqlite/16-workers-4                  4.395 ±  1%        1.109 ±  7%  -74.77% (p=0.001 n=7)
Delete/sqlite/64-workers-4                4364.0m ±  6%       668.9m ±  7%  -84.67% (p=0.001 n=7)
Delete/sqlite/128-workers-4               4358.0m ±  1%       539.3m ±  8%  -87.63% (p=0.001 n=7)
Delete/dqlite/1-workers-4                   4.365 ±  1%        4.372 ±  1%        ~ (p=0.434 n=7)
Delete/dqlite/4-workers-4                   4.366 ±  0%        2.419 ±  0%  -44.59% (p=0.001 n=7)
Delete/dqlite/16-workers-4                4373.0m ±  1%       819.2m ±  4%  -81.27% (p=0.001 n=7)
Delete/dqlite/64-workers-4                4366.0m ±  1%       337.1m ±  6%  -92.28% (p=0.001 n=7)
Delete/dqlite/128-workers-4               4357.0m ±  1%       249.0m ± 10%  -94.29% (p=0.001 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.246 ±  0%        4.514 ±  0%   +6.31% (p=0.001 n=7)
Update/sqlite/4-workers-4                   4.309 ±  1%        2.998 ±  1%  -30.42% (p=0.001 n=7)
Update/sqlite/16-workers-4                  4.315 ±  0%        1.705 ±  1%  -60.49% (p=0.001 n=7)
Update/sqlite/64-workers-4                  4.350 ±  1%        1.147 ±  1%  -73.63% (p=0.001 n=7)
Update/sqlite/128-workers-4               4440.0m ± 38%       915.3m ±  2%  -79.39% (p=0.001 n=7)
Update/dqlite/1-workers-4                   4.205 ±  0%        4.413 ±  1%   +4.95% (p=0.001 n=7)
Update/dqlite/4-workers-4                   4.199 ±  1%        2.684 ±  3%  -36.08% (p=0.001 n=7)
Update/dqlite/16-workers-4                  4.235 ±  1%        1.386 ±  5%  -67.27% (p=0.001 n=7)
Update/dqlite/64-workers-4                4321.0m ±  3%       744.1m ± 22%  -82.78% (p=0.001 n=7)
Update/dqlite/128-workers-4               4384.0m ±  5%       498.9m ± 15%  -88.62% (p=0.001 n=7)
geomean                                                 ²                   -56.30%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before     │                 After                  │
                                        │ sec-reading/op │ sec-reading/op  vs base                │
Compaction/sqlite-4                        29.10µ ±  11%     28.70µ ± 13%         ~ (p=0.474 n=7)
Compaction/dqlite-4                        13.40µ ± 175%     16.70µ ± 22%         ~ (p=0.383 n=7)
Create/sqlite/1-workers-4                  20.10µ ±   6%     23.10µ ± 21%   +14.93% (p=0.035 n=7)
Create/sqlite/4-workers-4                  21.40µ ±  39%     95.60µ ±  8%  +346.73% (p=0.001 n=7)
Create/sqlite/16-workers-4                 23.50µ ±  20%     50.80µ ±  3%  +116.17% (p=0.001 n=7)
Create/sqlite/64-workers-4                 25.60µ ±  35%     24.60µ ±  6%         ~ (p=0.779 n=7)
Create/sqlite/128-workers-4                29.30µ ±  35%     20.20µ ±  8%   -31.06% (p=0.014 n=7)
Create/dqlite/1-workers-4                  9.800µ ±  77%    11.300µ ± 56%         ~ (p=1.000 n=7)
Create/dqlite/4-workers-4                  14.30µ ±  36%     12.30µ ± 28%         ~ (p=0.209 n=7)
Create/dqlite/16-workers-4                11.500µ ±  44%     5.200µ ± 37%   -54.78% (p=0.001 n=7)
Create/dqlite/64-workers-4                 9.000µ ± 100%     2.300µ ± 39%   -74.44% (p=0.001 n=7)
Create/dqlite/128-workers-4               11.400µ ±  31%     2.900µ ± 41%   -74.56% (p=0.001 n=7)
Delete/sqlite/1-workers-4                  33.40µ ±  21%     32.90µ ± 21%         ~ (p=0.594 n=7)
Delete/sqlite/4-workers-4                  34.30µ ±  14%    119.60µ ±  6%  +248.69% (p=0.001 n=7)
Delete/sqlite/16-workers-4                 36.80µ ±  14%     61.80µ ±  8%   +67.93% (p=0.001 n=7)
Delete/sqlite/64-workers-4                 37.10µ ±  35%     40.20µ ±  3%         ~ (p=0.710 n=7)
Delete/sqlite/128-workers-4                40.80µ ±  31%     34.90µ ±  3%   -14.46% (p=0.026 n=7)
Delete/dqlite/1-workers-4                  17.20µ ±  33%     14.60µ ± 27%         ~ (p=0.073 n=7)
Delete/dqlite/4-workers-4                  18.40µ ±  16%     17.60µ ± 28%         ~ (p=0.924 n=7)
Delete/dqlite/16-workers-4                 16.00µ ±  49%     10.00µ ± 24%   -37.50% (p=0.025 n=7)
Delete/dqlite/64-workers-4                14.400µ ±  29%     8.700µ ± 14%   -39.58% (p=0.001 n=7)
Delete/dqlite/128-workers-4               18.400µ ±  35%     8.800µ ± 23%   -52.17% (p=0.001 n=7)
Get/sqlite-4                               65.90µ ±   6%     52.20µ ± 11%   -20.79% (p=0.001 n=7)
Get/dqlite-4                               35.40µ ±  15%     24.30µ ± 23%   -31.36% (p=0.001 n=7)
List/sqlite-tiny/all-4                     6.600µ ±  24%     4.900µ ± 16%   -25.76% (p=0.005 n=7)
List/sqlite-tiny/pagination-4             14.800µ ±   2%     8.700µ ±  6%   -41.22% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4            14.700µ ±  10%     9.100µ ±  5%   -38.10% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4      40.60µ ±   4%     12.10µ ±  3%   -70.20% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           13.90µ ±   2%     11.70µ ± 32%   -15.83% (p=0.023 n=7)
List/sqlite-overflows-page/pagination-4    57.70µ ±  37%     12.50µ ± 40%   -78.34% (p=0.001 n=7)
List/dqlite-tiny/all-4                     4.100µ ±  34%     3.000µ ± 27%   -26.83% (p=0.013 n=7)
List/dqlite-tiny/pagination-4              9.700µ ±  10%     5.000µ ± 16%   -48.45% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4            11.200µ ±  22%     8.200µ ± 33%   -26.79% (p=0.001 n=7)
List/dqlite-fits-in-page/pagination-4     27.500µ ±  13%     9.500µ ± 43%   -65.45% (p=0.001 n=7)
List/dqlite-overflows-page/all-4           34.30µ ±  12%     22.70µ ± 35%   -33.82% (p=0.001 n=7)
List/dqlite-overflows-page/pagination-4    72.70µ ±  15%     24.00µ ± 19%   -66.99% (p=0.001 n=7)
Update/sqlite/1-workers-4                  23.30µ ±  45%     21.20µ ± 10%         ~ (p=0.105 n=7)
Update/sqlite/4-workers-4                  22.60µ ±  16%    114.00µ ± 11%  +404.42% (p=0.001 n=7)
Update/sqlite/16-workers-4                 22.90µ ±  29%     58.20µ ±  5%  +154.15% (p=0.001 n=7)
Update/sqlite/64-workers-4                 28.60µ ±  22%     32.30µ ±  4%   +12.94% (p=0.001 n=7)
Update/sqlite/128-workers-4                26.10µ ± 172%     25.80µ ±  5%         ~ (p=0.879 n=7)
Update/dqlite/1-workers-4                 11.400µ ±  79%     9.200µ ± 73%         ~ (p=0.557 n=7)
Update/dqlite/4-workers-4                  10.80µ ±  49%     12.30µ ± 39%         ~ (p=0.620 n=7)
Update/dqlite/16-workers-4                13.100µ ±  24%     6.700µ ± 24%   -48.85% (p=0.001 n=7)
Update/dqlite/64-workers-4                11.800µ ±  32%     4.200µ ± 19%   -64.41% (p=0.001 n=7)
Update/dqlite/128-workers-4               13.600µ ±  53%     3.800µ ± 42%   -72.06% (p=0.001 n=7)
geomean                                    19.67µ            15.56µ         -20.88%

                                        │       Before       │                  After                  │
                                        │   sec-writing/op   │ sec-writing/op  vs base                 │
Compaction/sqlite-4                          9.500µ ±   6%       9.400µ ±  7%        ~ (p=0.978 n=7)
Compaction/dqlite-4                          7.200µ ±   8%       7.100µ ±  8%        ~ (p=0.441 n=7)
Create/sqlite/1-workers-4                    274.3µ ±   6%       268.0µ ± 14%   -2.30% (p=0.038 n=7)
Create/sqlite/4-workers-4                  1507.00µ ±   6%       68.90µ ± 12%  -95.43% (p=0.001 n=7)
Create/sqlite/16-workers-4                 5531.00µ ±   6%       22.30µ ± 10%  -99.60% (p=0.001 n=7)
Create/sqlite/64-workers-4                19230.00µ ±  74%       15.80µ ±  9%  -99.92% (p=0.001 n=7)
Create/sqlite/128-workers-4               35890.00µ ±  27%       14.60µ ± 10%  -99.96% (p=0.001 n=7)
Create/dqlite/1-workers-4                    38.30µ ±  28%       37.50µ ± 23%        ~ (p=1.000 n=7)
Create/dqlite/4-workers-4                    46.50µ ±  26%       27.70µ ± 47%  -40.43% (p=0.002 n=7)
Create/dqlite/16-workers-4                   48.00µ ±  14%       17.50µ ± 16%  -63.54% (p=0.001 n=7)
Create/dqlite/64-workers-4                   43.50µ ±  21%       16.70µ ± 11%  -61.61% (p=0.001 n=7)
Create/dqlite/128-workers-4                  51.20µ ±  31%       15.60µ ± 14%  -69.53% (p=0.001 n=7)
Delete/sqlite/1-workers-4                    269.6µ ±  16%       278.2µ ±  9%        ~ (p=0.558 n=7)
Delete/sqlite/4-workers-4                  1510.00µ ±   6%       62.10µ ± 11%  -95.89% (p=0.001 n=7)
Delete/sqlite/16-workers-4                 5710.00µ ±   6%       26.80µ ±  6%  -99.53% (p=0.001 n=7)
Delete/sqlite/64-workers-4                19280.00µ ± 377%       18.60µ ±  8%  -99.90% (p=0.001 n=7)
Delete/sqlite/128-workers-4               38800.00µ ±  42%       17.50µ ±  8%  -99.95% (p=0.001 n=7)
Delete/dqlite/1-workers-4                    51.50µ ±  37%       41.00µ ± 34%        ~ (p=0.710 n=7)
Delete/dqlite/4-workers-4                    46.60µ ±  21%       33.80µ ± 25%  -27.47% (p=0.001 n=7)
Delete/dqlite/16-workers-4                   47.50µ ±  20%       19.50µ ± 11%  -58.95% (p=0.001 n=7)
Delete/dqlite/64-workers-4                   46.40µ ±  17%       17.60µ ± 12%  -62.07% (p=0.001 n=7)
Delete/dqlite/128-workers-4                  50.60µ ±  17%       18.00µ ± 17%  -64.43% (p=0.001 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                    278.5µ ±   9%       291.0µ ±  8%        ~ (p=0.259 n=7)
Update/sqlite/4-workers-4                  1516.00µ ±   8%       64.70µ ± 17%  -95.73% (p=0.001 n=7)
Update/sqlite/16-workers-4                 5777.00µ ±   5%       22.70µ ±  7%  -99.61% (p=0.001 n=7)
Update/sqlite/64-workers-4                19630.00µ ±  10%       17.20µ ± 10%  -99.91% (p=0.001 n=7)
Update/sqlite/128-workers-4               40210.00µ ± 216%       16.00µ ±  7%  -99.96% (p=0.001 n=7)
Update/dqlite/1-workers-4                    36.70µ ±  22%       45.70µ ± 26%        ~ (p=0.097 n=7)
Update/dqlite/4-workers-4                    43.70µ ±  31%       29.00µ ± 35%  -33.64% (p=0.001 n=7)
Update/dqlite/16-workers-4                   47.60µ ±  27%       20.20µ ± 11%  -57.56% (p=0.001 n=7)
Update/dqlite/64-workers-4                   44.10µ ±  27%       17.70µ ± 12%  -59.86% (p=0.001 n=7)
Update/dqlite/128-workers-4                  49.30µ ±  30%       18.50µ ± 11%  -62.47% (p=0.001 n=7)
geomean                                                    ²                   -82.56%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before      │                After                 │
                                        │      B/op       │     B/op       vs base               │
Compaction/sqlite-4                        2.344Ki ±  11%   2.296Ki ± 15%        ~ (p=0.364 n=7)
Compaction/dqlite-4                        1.263Ki ± 389%   2.087Ki ± 53%        ~ (p=0.535 n=7)
Create/sqlite/1-workers-4                  20.50Ki ±   0%   20.48Ki ±  0%   -0.12% (p=0.001 n=7)
Create/sqlite/4-workers-4                  20.50Ki ±   0%   19.10Ki ±  0%   -6.83% (p=0.001 n=7)
Create/sqlite/16-workers-4                 20.48Ki ±   0%   17.57Ki ±  0%  -14.21% (p=0.001 n=7)
Create/sqlite/64-workers-4                 20.53Ki ±   2%   17.18Ki ±  0%  -16.30% (p=0.001 n=7)
Create/sqlite/128-workers-4                20.56Ki ±   1%   17.11Ki ±  0%  -16.78% (p=0.001 n=7)
Create/dqlite/1-workers-4                  19.76Ki ±   0%   19.74Ki ±  0%   -0.08% (p=0.001 n=7)
Create/dqlite/4-workers-4                  19.73Ki ±   0%   18.31Ki ±  0%   -7.21% (p=0.001 n=7)
Create/dqlite/16-workers-4                 19.73Ki ±   0%   17.00Ki ±  0%  -13.86% (p=0.001 n=7)
Create/dqlite/64-workers-4                 19.75Ki ±   0%   16.67Ki ±  0%  -15.55% (p=0.001 n=7)
Create/dqlite/128-workers-4                19.76Ki ±   0%   16.64Ki ±  0%  -15.79% (p=0.001 n=7)
Delete/sqlite/1-workers-4                  22.93Ki ±   0%   22.90Ki ±  0%   -0.11% (p=0.001 n=7)
Delete/sqlite/4-workers-4                  22.92Ki ±   0%   21.50Ki ±  0%   -6.20% (p=0.001 n=7)
Delete/sqlite/16-workers-4                 22.90Ki ±   0%   20.00Ki ±  0%  -12.66% (p=0.001 n=7)
Delete/sqlite/64-workers-4                 22.94Ki ±  10%   19.64Ki ±  0%  -14.38% (p=0.001 n=7)
Delete/sqlite/128-workers-4                23.01Ki ±   2%   19.59Ki ±  0%  -14.87% (p=0.001 n=7)
Delete/dqlite/1-workers-4                  22.03Ki ±   0%   22.00Ki ±  0%   -0.11% (p=0.001 n=7)
Delete/dqlite/4-workers-4                  21.99Ki ±   0%   20.55Ki ±  0%   -6.55% (p=0.001 n=7)
Delete/dqlite/16-workers-4                 22.00Ki ±  10%   19.26Ki ±  0%  -12.48% (p=0.001 n=7)
Delete/dqlite/64-workers-4                 22.00Ki ±   6%   18.95Ki ±  0%  -13.88% (p=0.001 n=7)
Delete/dqlite/128-workers-4                22.04Ki ±   0%   18.93Ki ±  0%  -14.11% (p=0.001 n=7)
Get/sqlite-4                               24.41Ki ±   0%   22.19Ki ±  0%   -9.12% (p=0.001 n=7)
Get/dqlite-4                               23.25Ki ±   0%   21.18Ki ±  0%   -8.91% (p=0.001 n=7)
List/sqlite-tiny/all-4                      1134.0 ±  10%     968.0 ± 13%  -14.64% (p=0.007 n=7)
List/sqlite-tiny/pagination-4              1.554Ki ±   3%   1.255Ki ±  2%  -19.23% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4             7.329Ki ±   9%   5.876Ki ±  9%  -19.83% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4     11.152Ki ±   3%   6.199Ki ±  8%  -44.41% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           20.53Ki ±  12%   21.85Ki ± 17%   +6.43% (p=0.016 n=7)
List/sqlite-overflows-page/pagination-4    33.42Ki ±  44%   19.77Ki ± 16%  -40.85% (p=0.011 n=7)
List/dqlite-tiny/all-4                      1081.0 ±  15%     975.0 ± 16%   -9.81% (p=0.010 n=7)
List/dqlite-tiny/pagination-4                965.0 ±   5%    1003.0 ±  6%        ~ (p=0.128 n=7)
List/dqlite-fits-in-page/all-4             6.045Ki ±   8%   5.657Ki ±  9%        ~ (p=0.259 n=7)
List/dqlite-fits-in-page/pagination-4      5.458Ki ±   4%   5.927Ki ± 18%        ~ (p=0.097 n=7)
List/dqlite-overflows-page/all-4           30.88Ki ±   8%   30.72Ki ± 11%        ~ (p=0.318 n=7)
List/dqlite-overflows-page/pagination-4    29.76Ki ±   6%   29.88Ki ±  6%        ~ (p=1.000 n=7)
Update/sqlite/1-workers-4                  22.29Ki ±   0%   21.63Ki ±  0%   -2.94% (p=0.001 n=7)
Update/sqlite/4-workers-4                  22.31Ki ±   0%   20.20Ki ±  0%   -9.48% (p=0.001 n=7)
Update/sqlite/16-workers-4                 22.34Ki ±   1%   18.68Ki ±  0%  -16.40% (p=0.001 n=7)
Update/sqlite/64-workers-4                 22.50Ki ±   2%   18.29Ki ±  0%  -18.70% (p=0.001 n=7)
Update/sqlite/128-workers-4                23.19Ki ±  49%   18.23Ki ±  0%  -21.39% (p=0.001 n=7)
Update/dqlite/1-workers-4                  21.49Ki ±   0%   20.85Ki ±  0%   -2.99% (p=0.001 n=7)
Update/dqlite/4-workers-4                  21.50Ki ±   0%   19.40Ki ±  0%   -9.78% (p=0.001 n=7)
Update/dqlite/16-workers-4                 21.62Ki ±   0%   18.13Ki ±  0%  -16.16% (p=0.001 n=7)
Update/dqlite/64-workers-4                 22.03Ki ±   3%   17.79Ki ±  0%  -19.21% (p=0.001 n=7)
Update/dqlite/128-workers-4                22.31Ki ±   4%   17.75Ki ±  0%  -20.44% (p=0.001 n=7)
geomean                                    13.98Ki          12.52Ki        -10.46%

                                        │    Before    │                After                 │
                                        │  allocs/op   │  allocs/op    vs base                │
Compaction/sqlite-4                       50.00 ±  10%    49.00 ± 14%         ~ (p=0.274 n=7)
Compaction/dqlite-4                       29.00 ± 410%    49.00 ± 53%         ~ (p=0.520 n=7)
Create/sqlite/1-workers-4                 399.0 ±   0%    397.0 ±  0%    -0.50% (p=0.001 n=7)
Create/sqlite/4-workers-4                 399.0 ±   0%    362.0 ±  0%    -9.27% (p=0.001 n=7)
Create/sqlite/16-workers-4                399.0 ±   0%    318.0 ±  0%   -20.30% (p=0.001 n=7)
Create/sqlite/64-workers-4                399.0 ±   1%    306.0 ±  0%   -23.31% (p=0.001 n=7)
Create/sqlite/128-workers-4               400.0 ±   1%    303.0 ±  0%   -24.25% (p=0.001 n=7)
Create/dqlite/1-workers-4                 369.0 ±   0%    367.0 ±  0%    -0.54% (p=0.001 n=7)
Create/dqlite/4-workers-4                 369.0 ±   0%    336.0 ±  1%    -8.94% (p=0.001 n=7)
Create/dqlite/16-workers-4                369.0 ±   0%    303.0 ±  0%   -17.89% (p=0.001 n=7)
Create/dqlite/64-workers-4                368.0 ±   0%    294.0 ±  0%   -20.11% (p=0.001 n=7)
Create/dqlite/128-workers-4               368.0 ±   0%    293.0 ±  0%   -20.38% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 431.0 ±   0%    428.0 ±  0%    -0.70% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 431.0 ±   0%    393.0 ±  0%    -8.82% (p=0.001 n=7)
Delete/sqlite/16-workers-4                430.0 ±   0%    349.0 ±  0%   -18.84% (p=0.001 n=7)
Delete/sqlite/64-workers-4                430.0 ±   3%    337.0 ±  0%   -21.63% (p=0.001 n=7)
Delete/sqlite/128-workers-4               431.0 ±   1%    335.0 ±  0%   -22.27% (p=0.001 n=7)
Delete/dqlite/1-workers-4                 399.0 ±   0%    396.0 ±  0%    -0.75% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 399.0 ±   0%    365.0 ±  1%    -8.52% (p=0.001 n=7)
Delete/dqlite/16-workers-4                399.0 ±  13%    333.0 ±  0%   -16.54% (p=0.001 n=7)
Delete/dqlite/64-workers-4                399.0 ±   8%    325.0 ±  0%   -18.55% (p=0.001 n=7)
Delete/dqlite/128-workers-4               399.0 ±   0%    323.0 ±  0%   -19.05% (p=0.001 n=7)
Get/sqlite-4                              445.0 ±   0%    412.0 ±  0%    -7.42% (p=0.001 n=7)
Get/dqlite-4                              412.0 ±   0%    390.0 ±  0%    -5.34% (p=0.001 n=7)
List/sqlite-tiny/all-4                    16.00 ±  25%    12.00 ± 17%   -25.00% (p=0.019 n=7)
List/sqlite-tiny/pagination-4             24.00 ±   4%    18.00 ±  6%   -25.00% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4            22.00 ±   9%    18.00 ±  6%   -18.18% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4     41.00 ±   0%    21.00 ±  5%   -48.78% (p=0.001 n=7)
List/sqlite-overflows-page/all-4          9.000 ±   0%   19.000 ± 47%  +111.11% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   23.00 ±  61%    18.00 ± 61%         ~ (p=0.088 n=7)
List/dqlite-tiny/all-4                    14.00 ±  21%    12.00 ± 17%   -14.29% (p=0.007 n=7)
List/dqlite-tiny/pagination-4             14.00 ±   7%    13.00 ±  8%    -7.14% (p=0.049 n=7)
List/dqlite-fits-in-page/all-4            19.00 ±   5%    19.00 ± 21%         ~ (p=0.122 n=7)
List/dqlite-fits-in-page/pagination-4     19.00 ±  11%    19.00 ± 37%     0.00% (p=0.041 n=7)
List/dqlite-overflows-page/all-4          35.00 ±   3%    32.00 ± 25%    -8.57% (p=0.001 n=7)
List/dqlite-overflows-page/pagination-4   34.00 ±   9%    32.00 ± 16%    -5.88% (p=0.003 n=7)
Update/sqlite/1-workers-4                 412.0 ±   0%    404.0 ±  0%    -1.94% (p=0.001 n=7)
Update/sqlite/4-workers-4                 412.0 ±   0%    368.0 ±  0%   -10.68% (p=0.001 n=7)
Update/sqlite/16-workers-4                413.0 ±   1%    324.0 ±  0%   -21.55% (p=0.001 n=7)
Update/sqlite/64-workers-4                415.0 ±   2%    312.0 ±  0%   -24.82% (p=0.001 n=7)
Update/sqlite/128-workers-4               428.0 ±  47%    310.0 ±  0%   -27.57% (p=0.001 n=7)
Update/dqlite/1-workers-4                 381.0 ±   0%    374.0 ±  0%    -1.84% (p=0.001 n=7)
Update/dqlite/4-workers-4                 382.0 ±   0%    341.0 ±  1%   -10.73% (p=0.001 n=7)
Update/dqlite/16-workers-4                384.0 ±   1%    310.0 ±  0%   -19.27% (p=0.001 n=7)
Update/dqlite/64-workers-4                390.0 ±   3%    301.0 ±  0%   -22.82% (p=0.001 n=7)
Update/dqlite/128-workers-4               395.0 ±   4%    300.0 ±  0%   -24.05% (p=0.001 n=7)
geomean                                   167.0           146.8         -12.10%

                                        │        Before         │                    After                     │
                                        │ network-bytes-read/op │ network-bytes-read/op  vs base               │
Compaction/dqlite-4                                434.8 ± 427%             747.2 ± 56%        ~ (p=0.535 n=7)
Create/dqlite/1-workers-4                          240.6 ±   0%             240.8 ±  0%   +0.08% (p=0.009 n=7)
Create/dqlite/4-workers-4                          241.4 ±   0%             206.7 ±  5%  -14.37% (p=0.001 n=7)
Create/dqlite/16-workers-4                         241.7 ±   0%             147.1 ±  0%  -39.14% (p=0.001 n=7)
Create/dqlite/64-workers-4                         241.7 ±   0%             133.9 ±  1%  -44.60% (p=0.001 n=7)
Create/dqlite/128-workers-4                        241.7 ±   0%             132.6 ±  1%  -45.14% (p=0.001 n=7)
Delete/dqlite/1-workers-4                          716.7 ±   0%             717.0 ±  0%        ~ (p=0.480 n=7)
Delete/dqlite/4-workers-4                          718.4 ±   0%             684.0 ±  1%   -4.79% (p=0.001 n=7)
Delete/dqlite/16-workers-4                         718.4 ±  12%             628.8 ±  0%  -12.47% (p=0.001 n=7)
Delete/dqlite/64-workers-4                         718.7 ±   7%             618.3 ±  0%  -13.97% (p=0.001 n=7)
Delete/dqlite/128-workers-4                        718.6 ±   0%             616.5 ±  0%  -14.21% (p=0.001 n=7)
Get/dqlite-4                                      1159.0 ±   0%             820.1 ±  0%  -29.24% (p=0.001 n=7)
List/dqlite-tiny/all-4                             210.8 ±  26%             172.9 ± 18%  -17.98% (p=0.017 n=7)
List/dqlite-tiny/pagination-4                      198.0 ±  11%             189.1 ±  8%   -4.49% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4                   1.344Ki ±   8%           1.396Ki ± 21%        ~ (p=0.165 n=7)
List/dqlite-fits-in-page/pagination-4            1.344Ki ±   8%           1.371Ki ± 35%        ~ (p=0.972 n=7)
List/dqlite-overflows-page/all-4                 7.310Ki ±   4%           7.225Ki ± 22%        ~ (p=0.105 n=7)
List/dqlite-overflows-page/pagination-4          7.227Ki ±   9%           7.200Ki ± 14%        ~ (p=0.364 n=7)
Update/dqlite/1-workers-4                          262.8 ±   0%             262.9 ±  0%        ~ (p=0.158 n=7)
Update/dqlite/4-workers-4                          263.1 ±   0%             219.7 ±  4%  -16.50% (p=0.001 n=7)
Update/dqlite/16-workers-4                         264.4 ±   0%             164.6 ±  0%  -37.75% (p=0.001 n=7)
Update/dqlite/64-workers-4                         269.0 ±   3%             150.8 ±  1%  -43.94% (p=0.001 n=7)
Update/dqlite/128-workers-4                        271.9 ±   4%             149.1 ±  1%  -45.16% (p=0.001 n=7)
geomean                                            530.3                    442.5        -16.57%

                                        │          Before          │                      After                      │
                                        │ network-bytes-written/op │ network-bytes-written/op  vs base               │
Compaction/dqlite-4                                    3.991 ± 19%                4.051 ± 24%        ~ (p=0.456 n=7)
Create/dqlite/1-workers-4                              114.4 ±  1%                114.9 ±  1%   +0.44% (p=0.011 n=7)
Create/dqlite/4-workers-4                              116.0 ±  1%                123.6 ±  8%        ~ (p=0.195 n=7)
Create/dqlite/16-workers-4                            116.50 ±  1%                95.47 ±  1%  -18.05% (p=0.001 n=7)
Create/dqlite/64-workers-4                            116.60 ±  1%                88.77 ±  0%  -23.87% (p=0.001 n=7)
Create/dqlite/128-workers-4                           116.50 ±  1%                87.94 ±  0%  -24.52% (p=0.001 n=7)
Delete/dqlite/1-workers-4                              81.98 ±  0%                82.06 ±  1%        ~ (p=1.000 n=7)
Delete/dqlite/4-workers-4                              82.74 ±  0%                84.60 ±  9%        ~ (p=0.710 n=7)
Delete/dqlite/16-workers-4                             82.59 ± 34%                57.60 ±  0%        ~ (p=0.194 n=7)
Delete/dqlite/64-workers-4                             82.89 ± 21%                49.95 ±  0%  -39.74% (p=0.001 n=7)
Delete/dqlite/128-workers-4                            82.82 ±  1%                48.65 ±  1%  -41.26% (p=0.001 n=7)
Get/dqlite-4                                           80.58 ±  0%                88.53 ±  0%   +9.87% (p=0.001 n=7)
List/dqlite-tiny/all-4                               0.04618 ± 48%              0.03776 ± 34%  -18.23% (p=0.026 n=7)
List/dqlite-tiny/pagination-4                        0.05175 ± 17%              0.04854 ± 15%        ~ (p=0.097 n=7)
List/dqlite-fits-in-page/all-4                       0.06121 ± 13%              0.06579 ± 32%        ~ (p=0.097 n=7)
List/dqlite-fits-in-page/pagination-4                0.08707 ± 11%              0.06974 ± 48%  -19.90% (p=0.001 n=7)
List/dqlite-overflows-page/all-4                     0.08560 ±  4%              0.07963 ± 28%   -6.97% (p=0.007 n=7)
List/dqlite-overflows-page/pagination-4              0.13050 ± 18%              0.09284 ± 18%  -28.86% (p=0.001 n=7)
Update/dqlite/1-workers-4                              136.7 ±  0%                136.9 ±  0%   +0.15% (p=0.021 n=7)
Update/dqlite/4-workers-4                              136.7 ±  0%                132.7 ±  6%        ~ (p=0.209 n=7)
Update/dqlite/16-workers-4                             137.4 ±  0%                107.0 ±  1%  -22.13% (p=0.001 n=7)
Update/dqlite/64-workers-4                            140.40 ±  3%                98.81 ±  0%  -29.62% (p=0.001 n=7)
Update/dqlite/128-workers-4                           141.80 ±  4%                97.39 ±  0%  -31.32% (p=0.001 n=7)
geomean                                                13.88                      11.78        -15.17%
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                       20.87µ ±  3%
Compaction/dqlite-4                       41.49µ ±  2%
Create/sqlite/1-workers-4                 522.8µ ±  7%
Create/sqlite/4-workers-4                 179.5µ ±  4%
Create/sqlite/16-workers-4                82.65µ ±  3%
Create/sqlite/64-workers-4                48.85µ ±  4%
Create/sqlite/128-workers-4               43.17µ ±  5%
Create/dqlite/1-workers-4                 1.122m ±  3%
Create/dqlite/4-workers-4                 623.2µ ± 10%
Create/dqlite/16-workers-4                244.3µ ±  5%
Create/dqlite/64-workers-4                148.0µ ±  2%
Create/dqlite/128-workers-4               128.2µ ±  3%
Delete/sqlite/1-workers-4                 523.7µ ±  5%
Delete/sqlite/4-workers-4                 181.8µ ±  1%
Delete/sqlite/16-workers-4                83.65µ ±  5%
Delete/sqlite/64-workers-4                55.05µ ±  4%
Delete/sqlite/128-workers-4               47.33µ ±  3%
Delete/dqlite/1-workers-4                 1.117m ±  1%
Delete/dqlite/4-workers-4                 618.2µ ±  6%
Delete/dqlite/16-workers-4                249.0µ ±  2%
Delete/dqlite/64-workers-4                150.2µ ±  4%
Delete/dqlite/128-workers-4               136.4µ ±  3%
Get/sqlite-4                              222.1µ ±  2%
Get/dqlite-4                              344.8µ ±  1%
List/sqlite-tiny/all-4                    3.238µ ±  2%
List/sqlite-tiny/pagination-4             4.751µ ±  4%
List/sqlite-fits-in-page/all-4            5.200µ ±  7%
List/sqlite-fits-in-page/pagination-4     7.050µ ±  6%
List/sqlite-overflows-page/all-4          11.53µ ±  6%
List/sqlite-overflows-page/pagination-4   12.54µ ±  8%
List/dqlite-tiny/all-4                    2.227µ ± 14%
List/dqlite-tiny/pagination-4             3.332µ ±  5%
List/dqlite-fits-in-page/all-4            5.400µ ± 16%
List/dqlite-fits-in-page/pagination-4     6.279µ ± 16%
List/dqlite-overflows-page/all-4          15.14µ ± 13%
List/dqlite-overflows-page/pagination-4   16.25µ ±  4%
Update/sqlite/1-workers-4                 535.6µ ±  3%
Update/sqlite/4-workers-4                 193.9µ ±  2%
Update/sqlite/16-workers-4                91.23µ ±  3%
Update/sqlite/64-workers-4                58.83µ ±  2%
Update/sqlite/128-workers-4               51.96µ ±  2%
Update/dqlite/1-workers-4                 1.121m ±  8%
Update/dqlite/4-workers-4                 597.4µ ±  7%
Update/dqlite/16-workers-4                273.1µ ±  4%
Update/dqlite/64-workers-4                165.2µ ±  7%
Update/dqlite/128-workers-4               144.5µ ±  3%
geomean                                   74.86µ

                                        │        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.24 ±  2%
Compaction/dqlite-4                         12.21 ±  1%
Create/sqlite/1-workers-4                   13.86 ±  0%
Create/sqlite/4-workers-4                   10.60 ±  1%
Create/sqlite/16-workers-4                  10.43 ±  0%
Create/sqlite/64-workers-4                  10.35 ±  0%
Create/sqlite/128-workers-4                 10.33 ±  0%
Create/dqlite/1-workers-4                   13.80 ±  1%
Create/dqlite/4-workers-4                   10.93 ±  1%
Create/dqlite/16-workers-4                  10.44 ±  0%
Create/dqlite/64-workers-4                  10.34 ±  0%
Create/dqlite/128-workers-4                 10.33 ±  0%
Delete/sqlite/1-workers-4                   16.26 ±  0%
Delete/sqlite/4-workers-4                   13.41 ±  1%
Delete/sqlite/16-workers-4                  16.27 ±  1%
Delete/sqlite/64-workers-4                  17.23 ±  0%
Delete/sqlite/128-workers-4                 17.21 ±  0%
Delete/dqlite/1-workers-4                   16.29 ±  1%
Delete/dqlite/4-workers-4                   13.24 ±  0%
Delete/dqlite/16-workers-4                  12.49 ±  0%
Delete/dqlite/64-workers-4                  13.92 ±  3%
Delete/dqlite/128-workers-4                 14.26 ±  1%
Get/sqlite-4                                16.99 ± 24%
Get/dqlite-4                                12.98 ±  0%
List/sqlite-tiny/all-4                     189.8m ±  1%
List/sqlite-tiny/pagination-4              194.6m ±  0%
List/sqlite-fits-in-page/all-4             163.3m ±  0%
List/sqlite-fits-in-page/pagination-4      165.6m ±  0%
List/sqlite-overflows-page/all-4           182.0m ±  2%
List/sqlite-overflows-page/pagination-4    182.9m ±  2%
List/dqlite-tiny/all-4                     190.6m ±  1%
List/dqlite-tiny/pagination-4              191.9m ±  0%
List/dqlite-fits-in-page/all-4             164.5m ±  1%
List/dqlite-fits-in-page/pagination-4      165.1m ±  2%
List/dqlite-overflows-page/all-4           184.4m ±  1%
List/dqlite-overflows-page/pagination-4    186.1m ±  1%
Update/sqlite/1-workers-4                   16.07 ±  0%
Update/sqlite/4-workers-4                   12.61 ±  0%
Update/sqlite/16-workers-4                  12.38 ±  0%
Update/sqlite/64-workers-4                  12.25 ±  0%
Update/sqlite/128-workers-4                 12.26 ±  0%
Update/dqlite/1-workers-4                   15.86 ±  1%
Update/dqlite/4-workers-4                   12.87 ±  1%
Update/dqlite/16-workers-4                  12.33 ±  0%
Update/dqlite/64-workers-4                  12.22 ±  0%
Update/dqlite/128-workers-4                 12.20 ±  0%
geomean                                     4.252

                                        │     After      │
                                        │ page-writes/op │
Compaction/sqlite-4                       191.4m ±  0%
Compaction/dqlite-4                       188.3m ±  0%
Create/sqlite/1-workers-4                  4.357 ±  0%
Create/sqlite/4-workers-4                  2.614 ±  2%
Create/sqlite/16-workers-4                954.1m ±  4%
Create/sqlite/64-workers-4                438.7m ±  6%
Create/sqlite/128-workers-4               315.7m ± 12%
Create/dqlite/1-workers-4                  4.242 ±  1%
Create/dqlite/4-workers-4                  2.339 ±  1%
Create/dqlite/16-workers-4                812.7m ±  4%
Create/dqlite/64-workers-4                309.6m ±  7%
Create/dqlite/128-workers-4               177.0m ±  7%
Delete/sqlite/1-workers-4                  4.411 ±  0%
Delete/sqlite/4-workers-4                  2.591 ±  1%
Delete/sqlite/16-workers-4                 1.109 ±  7%
Delete/sqlite/64-workers-4                668.9m ±  7%
Delete/sqlite/128-workers-4               539.3m ±  8%
Delete/dqlite/1-workers-4                  4.372 ±  1%
Delete/dqlite/4-workers-4                  2.419 ±  0%
Delete/dqlite/16-workers-4                819.2m ±  4%
Delete/dqlite/64-workers-4                337.1m ±  6%
Delete/dqlite/128-workers-4               249.0m ± 10%
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.514 ±  0%
Update/sqlite/4-workers-4                  2.998 ±  1%
Update/sqlite/16-workers-4                 1.705 ±  1%
Update/sqlite/64-workers-4                 1.147 ±  1%
Update/sqlite/128-workers-4               915.3m ±  2%
Update/dqlite/1-workers-4                  4.413 ±  1%
Update/dqlite/4-workers-4                  2.684 ±  3%
Update/dqlite/16-workers-4                 1.386 ±  5%
Update/dqlite/64-workers-4                744.1m ± 22%
Update/dqlite/128-workers-4               498.9m ± 15%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After      │
                                        │ sec-reading/op │
Compaction/sqlite-4                         28.70µ ± 13%
Compaction/dqlite-4                         16.70µ ± 22%
Create/sqlite/1-workers-4                   23.10µ ± 21%
Create/sqlite/4-workers-4                   95.60µ ±  8%
Create/sqlite/16-workers-4                  50.80µ ±  3%
Create/sqlite/64-workers-4                  24.60µ ±  6%
Create/sqlite/128-workers-4                 20.20µ ±  8%
Create/dqlite/1-workers-4                   11.30µ ± 56%
Create/dqlite/4-workers-4                   12.30µ ± 28%
Create/dqlite/16-workers-4                  5.200µ ± 37%
Create/dqlite/64-workers-4                  2.300µ ± 39%
Create/dqlite/128-workers-4                 2.900µ ± 41%
Delete/sqlite/1-workers-4                   32.90µ ± 21%
Delete/sqlite/4-workers-4                   119.6µ ±  6%
Delete/sqlite/16-workers-4                  61.80µ ±  8%
Delete/sqlite/64-workers-4                  40.20µ ±  3%
Delete/sqlite/128-workers-4                 34.90µ ±  3%
Delete/dqlite/1-workers-4                   14.60µ ± 27%
Delete/dqlite/4-workers-4                   17.60µ ± 28%
Delete/dqlite/16-workers-4                  10.00µ ± 24%
Delete/dqlite/64-workers-4                  8.700µ ± 14%
Delete/dqlite/128-workers-4                 8.800µ ± 23%
Get/sqlite-4                                52.20µ ± 11%
Get/dqlite-4                                24.30µ ± 23%
List/sqlite-tiny/all-4                      4.900µ ± 16%
List/sqlite-tiny/pagination-4               8.700µ ±  6%
List/sqlite-fits-in-page/all-4              9.100µ ±  5%
List/sqlite-fits-in-page/pagination-4       12.10µ ±  3%
List/sqlite-overflows-page/all-4            11.70µ ± 32%
List/sqlite-overflows-page/pagination-4     12.50µ ± 40%
List/dqlite-tiny/all-4                      3.000µ ± 27%
List/dqlite-tiny/pagination-4               5.000µ ± 16%
List/dqlite-fits-in-page/all-4              8.200µ ± 33%
List/dqlite-fits-in-page/pagination-4       9.500µ ± 43%
List/dqlite-overflows-page/all-4            22.70µ ± 35%
List/dqlite-overflows-page/pagination-4     24.00µ ± 19%
Update/sqlite/1-workers-4                   21.20µ ± 10%
Update/sqlite/4-workers-4                   114.0µ ± 11%
Update/sqlite/16-workers-4                  58.20µ ±  5%
Update/sqlite/64-workers-4                  32.30µ ±  4%
Update/sqlite/128-workers-4                 25.80µ ±  5%
Update/dqlite/1-workers-4                   9.200µ ± 73%
Update/dqlite/4-workers-4                   12.30µ ± 39%
Update/dqlite/16-workers-4                  6.700µ ± 24%
Update/dqlite/64-workers-4                  4.200µ ± 19%
Update/dqlite/128-workers-4                 3.800µ ± 42%
geomean                                     15.56µ

                                        │     After      │
                                        │ sec-writing/op │
Compaction/sqlite-4                       9.400µ ±  7%
Compaction/dqlite-4                       7.100µ ±  8%
Create/sqlite/1-workers-4                 268.0µ ± 14%
Create/sqlite/4-workers-4                 68.90µ ± 12%
Create/sqlite/16-workers-4                22.30µ ± 10%
Create/sqlite/64-workers-4                15.80µ ±  9%
Create/sqlite/128-workers-4               14.60µ ± 10%
Create/dqlite/1-workers-4                 37.50µ ± 23%
Create/dqlite/4-workers-4                 27.70µ ± 47%
Create/dqlite/16-workers-4                17.50µ ± 16%
Create/dqlite/64-workers-4                16.70µ ± 11%
Create/dqlite/128-workers-4               15.60µ ± 14%
Delete/sqlite/1-workers-4                 278.2µ ±  9%
Delete/sqlite/4-workers-4                 62.10µ ± 11%
Delete/sqlite/16-workers-4                26.80µ ±  6%
Delete/sqlite/64-workers-4                18.60µ ±  8%
Delete/sqlite/128-workers-4               17.50µ ±  8%
Delete/dqlite/1-workers-4                 41.00µ ± 34%
Delete/dqlite/4-workers-4                 33.80µ ± 25%
Delete/dqlite/16-workers-4                19.50µ ± 11%
Delete/dqlite/64-workers-4                17.60µ ± 12%
Delete/dqlite/128-workers-4               18.00µ ± 17%
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                 291.0µ ±  8%
Update/sqlite/4-workers-4                 64.70µ ± 17%
Update/sqlite/16-workers-4                22.70µ ±  7%
Update/sqlite/64-workers-4                17.20µ ± 10%
Update/sqlite/128-workers-4               16.00µ ±  7%
Update/dqlite/1-workers-4                 45.70µ ± 26%
Update/dqlite/4-workers-4                 29.00µ ± 35%
Update/dqlite/16-workers-4                20.20µ ± 11%
Update/dqlite/64-workers-4                17.70µ ± 12%
Update/dqlite/128-workers-4               18.50µ ± 11%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │     B/op      │
Compaction/sqlite-4                       2.296Ki ± 15%
Compaction/dqlite-4                       2.087Ki ± 53%
Create/sqlite/1-workers-4                 20.48Ki ±  0%
Create/sqlite/4-workers-4                 19.10Ki ±  0%
Create/sqlite/16-workers-4                17.57Ki ±  0%
Create/sqlite/64-workers-4                17.18Ki ±  0%
Create/sqlite/128-workers-4               17.11Ki ±  0%
Create/dqlite/1-workers-4                 19.74Ki ±  0%
Create/dqlite/4-workers-4                 18.31Ki ±  0%
Create/dqlite/16-workers-4                17.00Ki ±  0%
Create/dqlite/64-workers-4                16.67Ki ±  0%
Create/dqlite/128-workers-4               16.64Ki ±  0%
Delete/sqlite/1-workers-4                 22.90Ki ±  0%
Delete/sqlite/4-workers-4                 21.50Ki ±  0%
Delete/sqlite/16-workers-4                20.00Ki ±  0%
Delete/sqlite/64-workers-4                19.64Ki ±  0%
Delete/sqlite/128-workers-4               19.59Ki ±  0%
Delete/dqlite/1-workers-4                 22.00Ki ±  0%
Delete/dqlite/4-workers-4                 20.55Ki ±  0%
Delete/dqlite/16-workers-4                19.26Ki ±  0%
Delete/dqlite/64-workers-4                18.95Ki ±  0%
Delete/dqlite/128-workers-4               18.93Ki ±  0%
Get/sqlite-4                              22.19Ki ±  0%
Get/dqlite-4                              21.18Ki ±  0%
List/sqlite-tiny/all-4                      968.0 ± 13%
List/sqlite-tiny/pagination-4             1.255Ki ±  2%
List/sqlite-fits-in-page/all-4            5.876Ki ±  9%
List/sqlite-fits-in-page/pagination-4     6.199Ki ±  8%
List/sqlite-overflows-page/all-4          21.85Ki ± 17%
List/sqlite-overflows-page/pagination-4   19.77Ki ± 16%
List/dqlite-tiny/all-4                      975.0 ± 16%
List/dqlite-tiny/pagination-4              1003.0 ±  6%
List/dqlite-fits-in-page/all-4            5.657Ki ±  9%
List/dqlite-fits-in-page/pagination-4     5.927Ki ± 18%
List/dqlite-overflows-page/all-4          30.72Ki ± 11%
List/dqlite-overflows-page/pagination-4   29.88Ki ±  6%
Update/sqlite/1-workers-4                 21.63Ki ±  0%
Update/sqlite/4-workers-4                 20.20Ki ±  0%
Update/sqlite/16-workers-4                18.68Ki ±  0%
Update/sqlite/64-workers-4                18.29Ki ±  0%
Update/sqlite/128-workers-4               18.23Ki ±  0%
Update/dqlite/1-workers-4                 20.85Ki ±  0%
Update/dqlite/4-workers-4                 19.40Ki ±  0%
Update/dqlite/16-workers-4                18.13Ki ±  0%
Update/dqlite/64-workers-4                17.79Ki ±  0%
Update/dqlite/128-workers-4               17.75Ki ±  0%
geomean                                   12.52Ki

                                        │    After    │
                                        │  allocs/op  │
Compaction/sqlite-4                       49.00 ± 14%
Compaction/dqlite-4                       49.00 ± 53%
Create/sqlite/1-workers-4                 397.0 ±  0%
Create/sqlite/4-workers-4                 362.0 ±  0%
Create/sqlite/16-workers-4                318.0 ±  0%
Create/sqlite/64-workers-4                306.0 ±  0%
Create/sqlite/128-workers-4               303.0 ±  0%
Create/dqlite/1-workers-4                 367.0 ±  0%
Create/dqlite/4-workers-4                 336.0 ±  1%
Create/dqlite/16-workers-4                303.0 ±  0%
Create/dqlite/64-workers-4                294.0 ±  0%
Create/dqlite/128-workers-4               293.0 ±  0%
Delete/sqlite/1-workers-4                 428.0 ±  0%
Delete/sqlite/4-workers-4                 393.0 ±  0%
Delete/sqlite/16-workers-4                349.0 ±  0%
Delete/sqlite/64-workers-4                337.0 ±  0%
Delete/sqlite/128-workers-4               335.0 ±  0%
Delete/dqlite/1-workers-4                 396.0 ±  0%
Delete/dqlite/4-workers-4                 365.0 ±  1%
Delete/dqlite/16-workers-4                333.0 ±  0%
Delete/dqlite/64-workers-4                325.0 ±  0%
Delete/dqlite/128-workers-4               323.0 ±  0%
Get/sqlite-4                              412.0 ±  0%
Get/dqlite-4                              390.0 ±  0%
List/sqlite-tiny/all-4                    12.00 ± 17%
List/sqlite-tiny/pagination-4             18.00 ±  6%
List/sqlite-fits-in-page/all-4            18.00 ±  6%
List/sqlite-fits-in-page/pagination-4     21.00 ±  5%
List/sqlite-overflows-page/all-4          19.00 ± 47%
List/sqlite-overflows-page/pagination-4   18.00 ± 61%
List/dqlite-tiny/all-4                    12.00 ± 17%
List/dqlite-tiny/pagination-4             13.00 ±  8%
List/dqlite-fits-in-page/all-4            19.00 ± 21%
List/dqlite-fits-in-page/pagination-4     19.00 ± 37%
List/dqlite-overflows-page/all-4          32.00 ± 25%
List/dqlite-overflows-page/pagination-4   32.00 ± 16%
Update/sqlite/1-workers-4                 404.0 ±  0%
Update/sqlite/4-workers-4                 368.0 ±  0%
Update/sqlite/16-workers-4                324.0 ±  0%
Update/sqlite/64-workers-4                312.0 ±  0%
Update/sqlite/128-workers-4               310.0 ±  0%
Update/dqlite/1-workers-4                 374.0 ±  0%
Update/dqlite/4-workers-4                 341.0 ±  1%
Update/dqlite/16-workers-4                310.0 ±  0%
Update/dqlite/64-workers-4                301.0 ±  0%
Update/dqlite/128-workers-4               300.0 ±  0%
geomean                                   146.8

                                        │         After         │
                                        │ network-bytes-read/op │
Compaction/dqlite-4                                 747.2 ± 56%
Create/dqlite/1-workers-4                           240.8 ±  0%
Create/dqlite/4-workers-4                           206.7 ±  5%
Create/dqlite/16-workers-4                          147.1 ±  0%
Create/dqlite/64-workers-4                          133.9 ±  1%
Create/dqlite/128-workers-4                         132.6 ±  1%
Delete/dqlite/1-workers-4                           717.0 ±  0%
Delete/dqlite/4-workers-4                           684.0 ±  1%
Delete/dqlite/16-workers-4                          628.8 ±  0%
Delete/dqlite/64-workers-4                          618.3 ±  0%
Delete/dqlite/128-workers-4                         616.5 ±  0%
Get/dqlite-4                                        820.1 ±  0%
List/dqlite-tiny/all-4                              172.9 ± 18%
List/dqlite-tiny/pagination-4                       189.1 ±  8%
List/dqlite-fits-in-page/all-4                    1.396Ki ± 21%
List/dqlite-fits-in-page/pagination-4             1.371Ki ± 35%
List/dqlite-overflows-page/all-4                  7.225Ki ± 22%
List/dqlite-overflows-page/pagination-4           7.200Ki ± 14%
Update/dqlite/1-workers-4                           262.9 ±  0%
Update/dqlite/4-workers-4                           219.7 ±  4%
Update/dqlite/16-workers-4                          164.6 ±  0%
Update/dqlite/64-workers-4                          150.8 ±  1%
Update/dqlite/128-workers-4                         149.1 ±  1%
geomean                                             442.5

                                        │          After           │
                                        │ network-bytes-written/op │
Compaction/dqlite-4                                    4.051 ± 24%
Create/dqlite/1-workers-4                              114.9 ±  1%
Create/dqlite/4-workers-4                              123.6 ±  8%
Create/dqlite/16-workers-4                             95.47 ±  1%
Create/dqlite/64-workers-4                             88.77 ±  0%
Create/dqlite/128-workers-4                            87.94 ±  0%
Delete/dqlite/1-workers-4                              82.06 ±  1%
Delete/dqlite/4-workers-4                              84.60 ±  9%
Delete/dqlite/16-workers-4                             57.60 ±  0%
Delete/dqlite/64-workers-4                             49.95 ±  0%
Delete/dqlite/128-workers-4                            48.65 ±  1%
Get/dqlite-4                                           88.53 ±  0%
List/dqlite-tiny/all-4                               0.03776 ± 34%
List/dqlite-tiny/pagination-4                        0.04854 ± 15%
List/dqlite-fits-in-page/all-4                       0.06579 ± 32%
List/dqlite-fits-in-page/pagination-4                0.06974 ± 48%
List/dqlite-overflows-page/all-4                     0.07963 ± 28%
List/dqlite-overflows-page/pagination-4              0.09284 ± 18%
Update/dqlite/1-workers-4                              136.9 ±  0%
Update/dqlite/4-workers-4                              132.7 ±  6%
Update/dqlite/16-workers-4                             107.0 ±  1%
Update/dqlite/64-workers-4                             98.81 ±  0%
Update/dqlite/128-workers-4                            97.39 ±  0%
geomean                                                11.78

@marco6 marco6 mentioned this pull request Jul 29, 2024
@marco6 marco6 force-pushed the marco6/improve-list-sql branch 2 times, most recently from 8163d25 to a683b84 Compare August 1, 2024 12:50
@marco6 marco6 force-pushed the marco6/improve-list-sql branch 2 times, most recently from 0b7129e to e6bc004 Compare September 6, 2024 06:51
@marco6
Copy link
Collaborator Author

marco6 commented Sep 6, 2024

During the development of #170 we found out that List queries cannot return PrevKV. Moreover, Update does not use get to retrieve the event anymore.

Delete query is on its way to be updated as well. This means that all GET path do not really need the prevKV and we could improve the read path way more by not reading the previous value (less data to read, less allocations).

There is still a place where this might happen: the watch query. Watchers might ask for prevKV. In this case we need to understand how to deal with that request (if necessary).

@marco6
Copy link
Collaborator Author

marco6 commented Oct 30, 2024

Depends on #195 as it removes PrevKV from the query.

@marco6
Copy link
Collaborator Author

marco6 commented Oct 30, 2024

Depends on #180.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants