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 30 commits into
base: master
Choose a base branch
from
Draft

Improve list query #140

wants to merge 30 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                        18.29µ ±    6%   18.85µ ±   2%   +3.04% (p=0.017 n=7)
Compaction/dqlite-4                        38.60µ ±    5%   39.97µ ±   8%        ~ (p=0.209 n=7)
Create/sqlite/1-workers-4                  412.7µ ±    2%   415.5µ ±   3%        ~ (p=0.383 n=7)
Create/sqlite/4-workers-4                  382.8µ ±    4%   386.9µ ±   5%        ~ (p=0.383 n=7)
Create/sqlite/16-workers-4                 347.7µ ±    6%   352.7µ ±  14%        ~ (p=0.318 n=7)
Create/sqlite/64-workers-4                 353.0µ ±   10%   353.1µ ±  22%        ~ (p=0.535 n=7)
Create/sqlite/128-workers-4                414.2µ ±   20%   434.2µ ± 147%        ~ (p=0.209 n=7)
Create/dqlite/1-workers-4                  915.3µ ±    3%   905.5µ ±   9%        ~ (p=0.318 n=7)
Create/dqlite/4-workers-4                  798.2µ ±    1%   826.3µ ±   3%   +3.51% (p=0.001 n=7)
Create/dqlite/16-workers-4                 788.5µ ±    3%   839.8µ ±   3%   +6.50% (p=0.001 n=7)
Create/dqlite/64-workers-4                 797.2µ ±    1%   830.0µ ±   3%   +4.12% (p=0.002 n=7)
Create/dqlite/128-workers-4                798.2µ ±    3%   808.2µ ±   4%   +1.25% (p=0.038 n=7)
Delete/sqlite/1-workers-4                  403.1µ ±    2%   414.0µ ±   1%   +2.71% (p=0.004 n=7)
Delete/sqlite/4-workers-4                  378.6µ ±    3%   385.4µ ±   2%        ~ (p=0.097 n=7)
Delete/sqlite/16-workers-4                 353.2µ ±    7%   353.0µ ±  10%        ~ (p=0.620 n=7)
Delete/sqlite/64-workers-4                 381.6µ ± 2931%   362.3µ ±   8%        ~ (p=0.128 n=7)
Delete/sqlite/128-workers-4                540.3µ ± 2238%   450.4µ ±  73%        ~ (p=0.209 n=7)
Delete/dqlite/1-workers-4                  898.4µ ±    3%   922.9µ ±   5%   +2.73% (p=0.038 n=7)
Delete/dqlite/4-workers-4                  794.7µ ±    3%   833.6µ ±   9%   +4.89% (p=0.001 n=7)
Delete/dqlite/16-workers-4                 792.7µ ±    8%   823.2µ ±   4%   +3.86% (p=0.007 n=7)
Delete/dqlite/64-workers-4                 789.4µ ±    3%   812.9µ ±   5%        ~ (p=0.053 n=7)
Delete/dqlite/128-workers-4                795.3µ ±    1%   808.4µ ±   5%   +1.65% (p=0.026 n=7)
Get/sqlite-4                               235.6µ ±    1%   221.0µ ±   1%   -6.18% (p=0.001 n=7)
Get/dqlite-4                               353.3µ ±    0%   334.4µ ±   1%   -5.36% (p=0.001 n=7)
List/sqlite-tiny/all-4                     3.944µ ±    8%   3.708µ ±   7%   -5.98% (p=0.007 n=7)
List/sqlite-tiny/pagination-4              8.174µ ±    3%   4.864µ ±  11%  -40.49% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4             7.443µ ±    6%   6.778µ ±   4%   -8.93% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4     20.829µ ±    3%   8.018µ ±   4%  -61.51% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           16.88µ ±    2%   19.38µ ±  12%  +14.82% (p=0.004 n=7)
List/sqlite-overflows-page/pagination-4    40.99µ ±    3%   16.09µ ±  13%  -60.74% (p=0.001 n=7)
List/dqlite-tiny/all-4                     2.915µ ±    4%   2.327µ ±  19%  -20.17% (p=0.001 n=7)
List/dqlite-tiny/pagination-4              6.054µ ±    2%   3.184µ ±   6%  -47.41% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4             6.667µ ±    9%   7.152µ ±  16%   +7.27% (p=0.007 n=7)
List/dqlite-fits-in-page/pagination-4     16.953µ ±    2%   8.878µ ±  22%  -47.63% (p=0.001 n=7)
List/dqlite-overflows-page/all-4           21.21µ ±    9%   27.55µ ±  24%  +29.91% (p=0.017 n=7)
List/dqlite-overflows-page/pagination-4    43.75µ ±    2%   26.95µ ±   7%  -38.39% (p=0.001 n=7)
Update/sqlite/1-workers-4                  414.2µ ±    2%   406.1µ ±   1%   -1.96% (p=0.001 n=7)
Update/sqlite/4-workers-4                  383.9µ ±    2%   387.3µ ±   4%        ~ (p=0.535 n=7)
Update/sqlite/16-workers-4                 365.3µ ±    6%   358.7µ ±   3%        ~ (p=0.318 n=7)
Update/sqlite/64-workers-4                 364.5µ ±   21%   347.6µ ±  28%        ~ (p=0.097 n=7)
Update/sqlite/128-workers-4                458.1µ ±   47%   378.8µ ± 124%        ~ (p=0.165 n=7)
Update/dqlite/1-workers-4                  904.6µ ±    4%   890.9µ ±   3%        ~ (p=0.259 n=7)
Update/dqlite/4-workers-4                  797.5µ ±    2%   803.7µ ±   2%        ~ (p=0.128 n=7)
Update/dqlite/16-workers-4                 817.1µ ±    2%   794.4µ ±   2%   -2.77% (p=0.011 n=7)
Update/dqlite/64-workers-4                 814.7µ ±    4%   798.5µ ±   3%        ~ (p=0.209 n=7)
Update/dqlite/128-workers-4                868.6µ ±    9%   790.6µ ±   3%   -8.99% (p=0.004 n=7)
geomean                                    175.6µ           159.7µ          -9.08%

                                        │        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.26 ±  1%     12.24 ±  1%        ~ (p=0.831 n=7)
Compaction/dqlite-4                         12.21 ±  1%     12.21 ±  1%        ~ (p=0.900 n=7)
Create/sqlite/1-workers-4                   13.98 ±  0%     13.99 ±  0%        ~ (p=0.160 n=7)
Create/sqlite/4-workers-4                   12.31 ±  4%     12.14 ±  3%        ~ (p=0.165 n=7)
Create/sqlite/16-workers-4                  9.989 ±  8%    10.080 ±  5%        ~ (p=0.477 n=7)
Create/sqlite/64-workers-4                  8.455 ±  3%     8.442 ±  5%        ~ (p=0.780 n=7)
Create/sqlite/128-workers-4                 7.921 ±  5%     8.009 ±  5%        ~ (p=1.000 n=7)
Create/dqlite/1-workers-4                   13.64 ±  1%     13.74 ±  1%        ~ (p=0.154 n=7)
Create/dqlite/4-workers-4                   11.08 ±  1%     11.20 ±  1%   +1.08% (p=0.001 n=7)
Create/dqlite/16-workers-4                  11.10 ±  0%     11.21 ±  1%   +0.99% (p=0.001 n=7)
Create/dqlite/64-workers-4                  11.12 ±  1%     11.27 ±  1%   +1.35% (p=0.003 n=7)
Create/dqlite/128-workers-4                 11.09 ±  1%     11.28 ±  1%   +1.71% (p=0.001 n=7)
Delete/sqlite/1-workers-4                   16.20 ±  0%     16.23 ±  0%   +0.19% (p=0.001 n=7)
Delete/sqlite/4-workers-4                   14.14 ±  4%     13.94 ±  5%        ~ (p=0.104 n=7)
Delete/sqlite/16-workers-4                  11.41 ±  4%     11.18 ±  2%        ~ (p=0.058 n=7)
Delete/sqlite/64-workers-4                  9.389 ±  9%     9.401 ±  4%        ~ (p=1.000 n=7)
Delete/sqlite/128-workers-4                 9.007 ± 36%     8.906 ±  4%        ~ (p=0.318 n=7)
Delete/dqlite/1-workers-4                   16.03 ±  0%     16.15 ±  1%   +0.75% (p=0.006 n=7)
Delete/dqlite/4-workers-4                   13.46 ±  1%     13.63 ±  1%   +1.26% (p=0.001 n=7)
Delete/dqlite/16-workers-4                  13.42 ±  3%     13.63 ±  1%   +1.56% (p=0.001 n=7)
Delete/dqlite/64-workers-4                  13.35 ±  2%     13.57 ±  2%   +1.65% (p=0.016 n=7)
Delete/dqlite/128-workers-4                 13.29 ±  1%     13.55 ±  4%   +1.96% (p=0.024 n=7)
Get/sqlite-4                                14.96 ±  0%     16.98 ± 24%        ~ (p=0.678 n=7)
Get/dqlite-4                                11.96 ±  0%     12.99 ±  0%   +8.61% (p=0.001 n=7)
List/sqlite-tiny/all-4                     191.6m ±  1%    191.1m ±  0%        ~ (p=0.247 n=7)
List/sqlite-tiny/pagination-4             1131.0m ±  0%    194.6m ±  2%  -82.79% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4             163.4m ±  1%    163.9m ±  0%        ~ (p=0.226 n=7)
List/sqlite-fits-in-page/pagination-4      960.8m ±  0%    166.0m ±  0%  -82.72% (p=0.001 n=7)
List/sqlite-overflows-page/all-4           177.1m ±  0%    186.0m ±  1%   +5.03% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   1278.0m ± 34%    182.8m ±  2%  -85.70% (p=0.001 n=7)
List/dqlite-tiny/all-4                     191.5m ±  0%    190.0m ±  1%   -0.78% (p=0.002 n=7)
List/dqlite-tiny/pagination-4             1126.0m ±  3%    190.0m ±  0%  -83.13% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4             164.3m ±  1%    163.1m ±  1%        ~ (p=0.874 n=7)
List/dqlite-fits-in-page/pagination-4      955.2m ±  3%    166.2m ±  2%  -82.60% (p=0.001 n=7)
List/dqlite-overflows-page/all-4           184.2m ±  0%    184.9m ±  2%        ~ (p=0.686 n=7)
List/dqlite-overflows-page/pagination-4   1071.0m ±  2%    186.5m ±  1%  -82.59% (p=0.001 n=7)
Update/sqlite/1-workers-4                   15.90 ±  0%     15.90 ±  0%        ~ (p=1.000 n=7)
Update/sqlite/4-workers-4                   13.96 ±  2%     14.32 ±  3%   +2.58% (p=0.007 n=7)
Update/sqlite/16-workers-4                  11.87 ±  3%     11.76 ±  2%        ~ (p=0.259 n=7)
Update/sqlite/64-workers-4                  10.49 ±  3%     10.17 ±  9%        ~ (p=0.097 n=7)
Update/sqlite/128-workers-4                10.320 ±  5%     9.740 ±  3%   -5.62% (p=0.010 n=7)
Update/dqlite/1-workers-4                   15.66 ±  1%     15.63 ±  1%        ~ (p=0.741 n=7)
Update/dqlite/4-workers-4                   12.98 ±  1%     13.16 ±  1%   +1.39% (p=0.002 n=7)
Update/dqlite/16-workers-4                  12.95 ±  1%     13.10 ±  1%   +1.16% (p=0.003 n=7)
Update/dqlite/64-workers-4                  13.07 ±  2%     13.07 ±  1%        ~ (p=0.604 n=7)
Update/dqlite/128-workers-4                 13.87 ±  8%     12.99 ±  1%   -6.34% (p=0.024 n=7)
geomean                                     5.140           4.090        -20.43%

                                        │     Before     │                 After                  │
                                        │ page-writes/op │ page-writes/op  vs base                │
Compaction/sqlite-4                        190.7m ± 0%        191.0m ± 0%       ~ (p=0.272 n=7)
Compaction/dqlite-4                        187.6m ± 0%        188.5m ± 0%  +0.48% (p=0.001 n=7)
Create/sqlite/1-workers-4                   4.375 ± 0%         4.379 ± 0%  +0.09% (p=0.026 n=7)
Create/sqlite/4-workers-4                   4.334 ± 0%         4.341 ± 1%       ~ (p=0.176 n=7)
Create/sqlite/16-workers-4                  4.305 ± 0%         4.308 ± 0%       ~ (p=0.644 n=7)
Create/sqlite/64-workers-4                  4.284 ± 1%         4.299 ± 1%       ~ (p=0.383 n=7)
Create/sqlite/128-workers-4                 4.245 ± 0%         4.233 ± 1%       ~ (p=0.195 n=7)
Create/dqlite/1-workers-4                   4.304 ± 0%         4.304 ± 0%       ~ (p=0.932 n=7)
Create/dqlite/4-workers-4                   4.330 ± 0%         4.330 ± 0%       ~ (p=0.922 n=7)
Create/dqlite/16-workers-4                  4.329 ± 0%         4.325 ± 0%       ~ (p=0.638 n=7)
Create/dqlite/64-workers-4                  4.316 ± 1%         4.325 ± 0%  +0.21% (p=0.006 n=7)
Create/dqlite/128-workers-4                 4.328 ± 0%         4.325 ± 0%       ~ (p=0.298 n=7)
Delete/sqlite/1-workers-4                   4.376 ± 0%         4.397 ± 0%  +0.48% (p=0.001 n=7)
Delete/sqlite/4-workers-4                   4.382 ± 1%         4.390 ± 1%       ~ (p=0.781 n=7)
Delete/sqlite/16-workers-4                  4.371 ± 1%         4.361 ± 1%       ~ (p=0.245 n=7)
Delete/sqlite/64-workers-4                  4.356 ± 5%         4.389 ± 1%       ~ (p=0.053 n=7)
Delete/sqlite/128-workers-4                 4.338 ± 5%         4.379 ± 2%       ~ (p=0.318 n=7)
Delete/dqlite/1-workers-4                   4.381 ± 1%         4.397 ± 0%  +0.37% (p=0.047 n=7)
Delete/dqlite/4-workers-4                   4.408 ± 0%         4.403 ± 0%       ~ (p=0.883 n=7)
Delete/dqlite/16-workers-4                  4.380 ± 1%         4.405 ± 0%  +0.57% (p=0.006 n=7)
Delete/dqlite/64-workers-4                  4.374 ± 1%         4.380 ± 1%       ~ (p=0.120 n=7)
Delete/dqlite/128-workers-4                 4.347 ± 1%         4.365 ± 1%  +0.41% (p=0.019 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.251 ± 0%         4.251 ± 0%       ~ (p=0.484 n=7)
Update/sqlite/4-workers-4                   4.321 ± 1%         4.338 ± 0%  +0.39% (p=0.035 n=7)
Update/sqlite/16-workers-4                  4.334 ± 0%         4.321 ± 1%  -0.30% (p=0.026 n=7)
Update/sqlite/64-workers-4                  4.365 ± 1%         4.320 ± 1%  -1.03% (p=0.004 n=7)
Update/sqlite/128-workers-4                 4.399 ± 1%         4.303 ± 1%  -2.18% (p=0.001 n=7)
Update/dqlite/1-workers-4                   4.229 ± 0%         4.224 ± 0%  -0.12% (p=0.009 n=7)
Update/dqlite/4-workers-4                   4.246 ± 0%         4.247 ± 0%       ~ (p=0.735 n=7)
Update/dqlite/16-workers-4                  4.259 ± 1%         4.244 ± 1%       ~ (p=0.318 n=7)
Update/dqlite/64-workers-4                  4.295 ± 2%         4.266 ± 1%       ~ (p=0.089 n=7)
Update/dqlite/128-workers-4                 4.617 ± 8%         4.270 ± 1%  -7.52% (p=0.006 n=7)
geomean                                                ²                   -0.16%               ²
¹ 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.30µ ± 28%     25.50µ ±  8%   +14.35% (p=0.016 n=7)
Compaction/dqlite-4                         32.20µ ± 44%     29.10µ ± 30%    -9.63% (p=0.023 n=7)
Create/sqlite/1-workers-4                   17.90µ ± 23%     21.40µ ± 25%   +19.55% (p=0.006 n=7)
Create/sqlite/4-workers-4                   21.20µ ± 29%     21.00µ ± 16%         ~ (p=0.902 n=7)
Create/sqlite/16-workers-4                  19.50µ ± 23%     23.40µ ± 26%   +20.00% (p=0.048 n=7)
Create/sqlite/64-workers-4                  23.60µ ± 16%     22.60µ ± 30%         ~ (p=0.804 n=7)
Create/sqlite/128-workers-4                 24.30µ ± 16%     24.90µ ± 18%         ~ (p=0.456 n=7)
Create/dqlite/1-workers-4                   10.20µ ± 25%     12.30µ ± 50%         ~ (p=0.259 n=7)
Create/dqlite/4-workers-4                   11.80µ ± 33%     10.80µ ± 26%         ~ (p=0.175 n=7)
Create/dqlite/16-workers-4                  11.40µ ± 34%     11.40µ ± 34%         ~ (p=0.977 n=7)
Create/dqlite/64-workers-4                  12.40µ ± 35%     10.10µ ± 44%         ~ (p=0.776 n=7)
Create/dqlite/128-workers-4                 10.90µ ± 33%     12.30µ ± 56%         ~ (p=0.929 n=7)
Delete/sqlite/1-workers-4                   31.80µ ± 13%     34.10µ ±  8%         ~ (p=0.119 n=7)
Delete/sqlite/4-workers-4                   32.20µ ± 15%     34.10µ ± 12%         ~ (p=0.456 n=7)
Delete/sqlite/16-workers-4                  33.70µ ± 11%     39.30µ ± 18%         ~ (p=0.091 n=7)
Delete/sqlite/64-workers-4                  38.90µ ± 16%     42.10µ ± 16%    +8.23% (p=0.017 n=7)
Delete/sqlite/128-workers-4                 40.00µ ± 50%     49.60µ ± 33%         ~ (p=0.128 n=7)
Delete/dqlite/1-workers-4                   14.80µ ± 20%     18.50µ ± 18%   +25.00% (p=0.007 n=7)
Delete/dqlite/4-workers-4                   16.50µ ± 24%     15.30µ ± 45%         ~ (p=0.710 n=7)
Delete/dqlite/16-workers-4                  14.90µ ± 21%     17.80µ ± 30%   +19.46% (p=0.049 n=7)
Delete/dqlite/64-workers-4                  16.70µ ± 44%     15.50µ ± 52%         ~ (p=0.710 n=7)
Delete/dqlite/128-workers-4                 15.70µ ± 23%     17.00µ ± 31%         ~ (p=0.642 n=7)
Get/sqlite-4                                64.40µ ±  7%     53.40µ ±  7%   -17.08% (p=0.001 n=7)
Get/dqlite-4                                34.40µ ± 12%     23.60µ ± 28%   -31.40% (p=0.001 n=7)
List/sqlite-tiny/all-4                      6.700µ ± 19%     6.200µ ± 16%         ~ (p=0.219 n=7)
List/sqlite-tiny/pagination-4              14.300µ ±  5%     9.100µ ± 34%   -36.36% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4              12.40µ ± 19%     11.30µ ±  4%    -8.87% (p=0.024 n=7)
List/sqlite-fits-in-page/pagination-4       32.20µ ±  6%     13.30µ ±  6%   -58.70% (p=0.001 n=7)
List/sqlite-overflows-page/all-4            13.10µ ±  3%     30.80µ ± 30%  +135.11% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4     40.00µ ± 22%     14.70µ ± 56%   -63.25% (p=0.001 n=7)
List/dqlite-tiny/all-4                      4.100µ ± 20%     2.600µ ± 58%   -36.59% (p=0.006 n=7)
List/dqlite-tiny/pagination-4               9.400µ ±  7%     3.700µ ± 22%   -60.64% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4             10.700µ ± 30%     7.400µ ± 45%   -30.84% (p=0.011 n=7)
List/dqlite-fits-in-page/pagination-4       26.00µ ± 16%     12.10µ ± 41%   -53.46% (p=0.001 n=7)
List/dqlite-overflows-page/all-4            33.90µ ± 13%     34.10µ ± 28%         ~ (p=0.927 n=7)
List/dqlite-overflows-page/pagination-4     65.90µ ± 12%     35.10µ ± 10%   -46.74% (p=0.001 n=7)
Update/sqlite/1-workers-4                   20.10µ ± 29%     22.20µ ± 19%         ~ (p=0.599 n=7)
Update/sqlite/4-workers-4                   20.30µ ± 25%     22.70µ ± 18%         ~ (p=0.620 n=7)
Update/sqlite/16-workers-4                  21.80µ ± 21%     24.80µ ± 17%         ~ (p=0.383 n=7)
Update/sqlite/64-workers-4                  26.10µ ± 20%     25.90µ ± 18%         ~ (p=0.980 n=7)
Update/sqlite/128-workers-4                 23.50µ ± 33%     28.60µ ± 19%         ~ (p=0.073 n=7)
Update/dqlite/1-workers-4                  10.200µ ± 54%     8.800µ ± 31%         ~ (p=0.165 n=7)
Update/dqlite/4-workers-4                   10.80µ ± 33%     12.60µ ± 53%         ~ (p=0.073 n=7)
Update/dqlite/16-workers-4                  12.20µ ± 19%     10.50µ ± 69%         ~ (p=0.598 n=7)
Update/dqlite/64-workers-4                  13.60µ ± 32%     13.20µ ± 42%         ~ (p=0.456 n=7)
Update/dqlite/128-workers-4                12.100µ ± 55%     8.800µ ± 51%         ~ (p=0.247 n=7)
geomean                                     18.76µ           17.18µ          -8.41%

                                        │     Before      │                  After                  │
                                        │ sec-writing/op  │ sec-writing/op  vs base                 │
Compaction/sqlite-4                       9.200µ ±  11%       9.300µ ±  5%        ~ (p=0.643 n=7)
Compaction/dqlite-4                       7.100µ ±  13%       7.100µ ±  3%        ~ (p=0.677 n=7)
Create/sqlite/1-workers-4                 184.2µ ±   3%       186.1µ ±  2%        ~ (p=0.318 n=7)
Create/sqlite/4-workers-4                 1.168m ±   9%       1.198m ± 10%        ~ (p=0.383 n=7)
Create/sqlite/16-workers-4                4.275m ±   9%       4.300m ± 12%        ~ (p=0.902 n=7)
Create/sqlite/64-workers-4                14.91m ±   3%       14.51m ±  5%        ~ (p=0.073 n=7)
Create/sqlite/128-workers-4               26.83m ±   5%       28.66m ± 21%   +6.82% (p=0.038 n=7)
Create/dqlite/1-workers-4                 39.40µ ±   7%       36.20µ ± 27%        ~ (p=0.687 n=7)
Create/dqlite/4-workers-4                 47.70µ ±  30%       46.20µ ± 13%        ~ (p=0.456 n=7)
Create/dqlite/16-workers-4                44.30µ ±  23%       45.80µ ± 24%        ~ (p=0.476 n=7)
Create/dqlite/64-workers-4                46.80µ ±  12%       49.90µ ± 14%        ~ (p=0.318 n=7)
Create/dqlite/128-workers-4               43.90µ ±  11%       43.30µ ± 22%        ~ (p=0.773 n=7)
Delete/sqlite/1-workers-4                 174.3µ ±   5%       189.7µ ±  5%   +8.84% (p=0.007 n=7)
Delete/sqlite/4-workers-4                 1.164m ±  10%       1.158m ± 18%        ~ (p=0.973 n=7)
Delete/sqlite/16-workers-4                4.295m ±  10%       4.479m ±  4%        ~ (p=0.259 n=7)
Delete/sqlite/64-workers-4                15.64m ± 510%       14.86m ±  5%   -4.99% (p=0.017 n=7)
Delete/sqlite/128-workers-4               29.39m ± 729%       28.30m ±  7%   -3.71% (p=0.038 n=7)
Delete/dqlite/1-workers-4                 39.40µ ±  21%       39.60µ ± 34%        ~ (p=1.000 n=7)
Delete/dqlite/4-workers-4                 47.50µ ±  15%       53.00µ ± 12%  +11.58% (p=0.007 n=7)
Delete/dqlite/16-workers-4                43.10µ ±  23%       50.40µ ±  9%        ~ (p=0.073 n=7)
Delete/dqlite/64-workers-4                47.60µ ±  16%       50.70µ ± 18%        ~ (p=0.137 n=7)
Delete/dqlite/128-workers-4               46.20µ ±  20%       49.80µ ± 21%        ~ (p=0.318 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                 186.1µ ±   4%       182.6µ ±  3%        ~ (p=0.737 n=7)
Update/sqlite/4-workers-4                 1.190m ±   6%       1.221m ± 14%        ~ (p=0.401 n=7)
Update/sqlite/16-workers-4                4.571m ±   9%       4.530m ±  6%        ~ (p=0.805 n=7)
Update/sqlite/64-workers-4                15.14m ±   7%       15.11m ±  3%        ~ (p=0.710 n=7)
Update/sqlite/128-workers-4               28.20m ±  16%       27.62m ± 24%        ~ (p=0.259 n=7)
Update/dqlite/1-workers-4                 31.00µ ±  37%       34.40µ ± 19%        ~ (p=0.154 n=7)
Update/dqlite/4-workers-4                 43.70µ ±  21%       43.60µ ± 16%        ~ (p=0.805 n=7)
Update/dqlite/16-workers-4                50.40µ ±  11%       46.80µ ± 18%        ~ (p=0.259 n=7)
Update/dqlite/64-workers-4                43.80µ ±  24%       45.80µ ± 14%        ~ (p=0.902 n=7)
Update/dqlite/128-workers-4               49.50µ ±  21%       43.70µ ± 28%        ~ (p=0.330 n=7)
geomean                                                 ²                    +0.92%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │    Before     │                After                 │
                                        │     B/op      │     B/op       vs base               │
Compaction/sqlite-4                       1.950Ki ± 38%   2.172Ki ±  6%        ~ (p=0.364 n=7)
Compaction/dqlite-4                       5.570Ki ± 54%   4.740Ki ± 42%  -14.90% (p=0.026 n=7)
Create/sqlite/1-workers-4                 20.47Ki ±  0%   20.45Ki ±  0%        ~ (p=0.195 n=7)
Create/sqlite/4-workers-4                 20.46Ki ±  0%   20.42Ki ±  0%   -0.19% (p=0.001 n=7)
Create/sqlite/16-workers-4                20.44Ki ±  0%   20.40Ki ±  0%   -0.17% (p=0.007 n=7)
Create/sqlite/64-workers-4                20.44Ki ±  0%   20.45Ki ±  0%        ~ (p=0.259 n=7)
Create/sqlite/128-workers-4               20.47Ki ±  1%   20.56Ki ±  2%   +0.42% (p=0.019 n=7)
Create/dqlite/1-workers-4                 19.72Ki ±  0%   19.96Ki ±  0%   +1.23% (p=0.001 n=7)
Create/dqlite/4-workers-4                 19.74Ki ±  0%   19.98Ki ±  0%   +1.22% (p=0.001 n=7)
Create/dqlite/16-workers-4                19.74Ki ±  0%   20.03Ki ±  0%   +1.44% (p=0.001 n=7)
Create/dqlite/64-workers-4                19.75Ki ±  0%   20.05Ki ±  0%   +1.53% (p=0.001 n=7)
Create/dqlite/128-workers-4               19.77Ki ±  0%   20.10Ki ±  0%   +1.68% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 22.89Ki ±  0%   23.01Ki ±  0%   +0.52% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 22.87Ki ±  0%   23.00Ki ±  0%   +0.55% (p=0.001 n=7)
Delete/sqlite/16-workers-4                22.84Ki ±  0%   22.95Ki ±  0%   +0.49% (p=0.001 n=7)
Delete/sqlite/64-workers-4                22.84Ki ±  7%   22.98Ki ±  0%   +0.62% (p=0.034 n=7)
Delete/sqlite/128-workers-4               22.91Ki ± 11%   23.13Ki ±  2%        ~ (p=0.209 n=7)
Delete/dqlite/1-workers-4                 21.98Ki ±  0%   22.58Ki ±  0%   +2.70% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 22.00Ki ±  0%   22.57Ki ±  1%   +2.58% (p=0.001 n=7)
Delete/dqlite/16-workers-4                22.00Ki ± 10%   22.59Ki ±  0%   +2.68% (p=0.001 n=7)
Delete/dqlite/64-workers-4                22.01Ki ±  7%   22.62Ki ±  9%   +2.79% (p=0.017 n=7)
Delete/dqlite/128-workers-4               22.02Ki ±  0%   22.64Ki ±  9%   +2.80% (p=0.026 n=7)
Get/sqlite-4                              24.42Ki ±  0%   22.43Ki ±  0%   -8.12% (p=0.001 n=7)
Get/dqlite-4                              23.25Ki ±  0%   21.55Ki ±  0%   -7.33% (p=0.001 n=7)
List/sqlite-tiny/all-4                    1.162Ki ± 11%   1.088Ki ±  5%   -6.39% (p=0.005 n=7)
List/sqlite-tiny/pagination-4             1.548Ki ±  3%   1.195Ki ± 28%  -22.78% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4            7.262Ki ± 15%   6.027Ki ±  4%  -17.00% (p=0.001 n=7)
List/sqlite-fits-in-page/pagination-4     9.342Ki ±  5%   5.666Ki ±  4%  -39.35% (p=0.001 n=7)
List/sqlite-overflows-page/all-4          20.54Ki ±  0%   27.32Ki ± 12%  +33.05% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   21.88Ki ± 41%   17.24Ki ± 23%        ~ (p=0.128 n=7)
List/dqlite-tiny/all-4                     1082.0 ±  4%     935.0 ±  9%  -13.59% (p=0.001 n=7)
List/dqlite-tiny/pagination-4               986.0 ±  4%     761.0 ± 10%  -22.82% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4            6.030Ki ±  6%   5.735Ki ± 10%        ~ (p=1.000 n=7)
List/dqlite-fits-in-page/pagination-4     5.544Ki ±  6%   5.401Ki ± 20%        ~ (p=0.710 n=7)
List/dqlite-overflows-page/all-4          30.31Ki ±  8%   29.09Ki ± 16%        ~ (p=0.620 n=7)
List/dqlite-overflows-page/pagination-4   30.05Ki ±  7%   26.84Ki ± 12%  -10.70% (p=0.002 n=7)
Update/sqlite/1-workers-4                 22.25Ki ±  0%   22.15Ki ±  0%   -0.46% (p=0.001 n=7)
Update/sqlite/4-workers-4                 22.25Ki ±  0%   22.12Ki ±  0%   -0.57% (p=0.001 n=7)
Update/sqlite/16-workers-4                22.29Ki ±  0%   22.06Ki ±  0%   -1.01% (p=0.001 n=7)
Update/sqlite/64-workers-4                22.56Ki ±  1%   22.08Ki ±  1%   -2.11% (p=0.001 n=7)
Update/sqlite/128-workers-4               22.66Ki ±  2%   22.15Ki ±  5%        ~ (p=0.068 n=7)
Update/dqlite/1-workers-4                 21.46Ki ±  0%   22.32Ki ±  0%   +3.98% (p=0.001 n=7)
Update/dqlite/4-workers-4                 21.50Ki ±  0%   22.22Ki ±  0%   +3.32% (p=0.001 n=7)
Update/dqlite/16-workers-4                21.51Ki ±  1%   22.26Ki ±  0%   +3.51% (p=0.001 n=7)
Update/dqlite/64-workers-4                21.64Ki ±  3%   22.30Ki ±  0%   +3.06% (p=0.001 n=7)
Update/dqlite/128-workers-4               23.33Ki ±  9%   22.29Ki ±  0%   -4.47% (p=0.026 n=7)
geomean                                   14.20Ki         13.73Ki         -3.32%

                                        │   Before    │                 After                  │
                                        │  allocs/op  │  allocs/op    vs base                  │
Compaction/sqlite-4                       42.00 ± 40%    46.00 ±  4%         ~ (p=0.235 n=7)
Compaction/dqlite-4                       134.0 ± 55%    114.0 ± 43%   -14.93% (p=0.024 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%    397.0 ±  0%    -0.50% (p=0.001 n=7)
Create/sqlite/16-workers-4                398.0 ±  0%    396.0 ±  0%    -0.50% (p=0.001 n=7)
Create/sqlite/64-workers-4                398.0 ±  1%    397.0 ±  0%    -0.25% (p=0.021 n=7)
Create/sqlite/128-workers-4               398.0 ±  2%    399.0 ±  1%         ~ (p=0.394 n=7)
Create/dqlite/1-workers-4                 369.0 ±  0%    372.0 ±  0%    +0.81% (p=0.001 n=7)
Create/dqlite/4-workers-4                 369.0 ±  0%    372.0 ±  0%    +0.81% (p=0.001 n=7)
Create/dqlite/16-workers-4                369.0 ±  0%    373.0 ±  0%    +1.08% (p=0.001 n=7)
Create/dqlite/64-workers-4                369.0 ±  0%    373.0 ±  0%    +1.08% (p=0.001 n=7)
Create/dqlite/128-workers-4               368.0 ±  0%    373.0 ±  0%    +1.36% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 431.0 ±  0%    431.0 ±  0%         ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                 430.0 ±  0%    431.0 ±  0%         ~ (p=0.266 n=7)
Delete/sqlite/16-workers-4                429.0 ±  0%    429.0 ±  0%         ~ (p=0.755 n=7)
Delete/sqlite/64-workers-4                428.0 ±  2%    430.0 ±  1%         ~ (p=0.166 n=7)
Delete/sqlite/128-workers-4               430.0 ±  3%    431.0 ±  2%         ~ (p=0.352 n=7)
Delete/dqlite/1-workers-4                 399.0 ±  0%    409.0 ±  0%    +2.51% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 399.0 ±  0%    408.0 ±  0%    +2.26% (p=0.001 n=7)
Delete/dqlite/16-workers-4                399.0 ± 13%    409.0 ±  0%    +2.51% (p=0.001 n=7)
Delete/dqlite/64-workers-4                399.0 ±  9%    409.0 ± 12%    +2.51% (p=0.013 n=7)
Delete/dqlite/128-workers-4               399.0 ±  0%    409.0 ± 12%    +2.51% (p=0.005 n=7)
Get/sqlite-4                              445.0 ±  0%    418.0 ±  0%    -6.07% (p=0.001 n=7)
Get/dqlite-4                              412.0 ±  0%    398.0 ±  0%    -3.40% (p=0.001 n=7)
List/sqlite-tiny/all-4                    16.00 ± 12%    14.00 ± 14%         ~ (p=0.055 n=7)
List/sqlite-tiny/pagination-4             25.00 ±  4%    18.00 ± 33%   -28.00% (p=0.001 n=7)
List/sqlite-fits-in-page/all-4            20.00 ± 20%    19.00 ± 11%         ~ (p=0.357 n=7)
List/sqlite-fits-in-page/pagination-4     32.00 ±  9%    22.00 ±  9%   -31.25% (p=0.001 n=7)
List/sqlite-overflows-page/all-4          9.000 ±  0%   28.000 ± 18%  +211.11% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   12.00 ± 67%    17.00 ± 41%         ~ (p=0.082 n=7)
List/dqlite-tiny/all-4                    15.00 ±  7%    11.00 ± 18%   -26.67% (p=0.001 n=7)
List/dqlite-tiny/pagination-4             14.00 ±  7%    10.00 ± 10%   -28.57% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4            20.00 ± 10%    16.00 ± 25%         ~ (p=0.066 n=7)
List/dqlite-fits-in-page/pagination-4     19.00 ±  5%    20.00 ± 30%         ~ (p=0.539 n=7)
List/dqlite-overflows-page/all-4          34.00 ±  3%    34.00 ± 29%         ~ (p=0.625 n=7)
List/dqlite-overflows-page/pagination-4   34.00 ±  9%    32.00 ± 16%    -5.88% (p=0.038 n=7)
Update/sqlite/1-workers-4                 412.0 ±  0%    415.0 ±  0%    +0.73% (p=0.001 n=7)
Update/sqlite/4-workers-4                 412.0 ±  0%    414.0 ±  0%    +0.49% (p=0.001 n=7)
Update/sqlite/16-workers-4                412.0 ±  0%    412.0 ±  0%         ~ (p=0.237 n=7)
Update/sqlite/64-workers-4                417.0 ±  1%    413.0 ±  0%    -0.96% (p=0.028 n=7)
Update/sqlite/128-workers-4               419.0 ±  3%    414.0 ±  5%         ~ (p=0.434 n=7)
Update/dqlite/1-workers-4                 381.0 ±  0%    403.0 ±  0%    +5.77% (p=0.001 n=7)
Update/dqlite/4-workers-4                 382.0 ±  0%    400.0 ±  0%    +4.71% (p=0.001 n=7)
Update/dqlite/16-workers-4                382.0 ±  1%    400.0 ±  0%    +4.71% (p=0.001 n=7)
Update/dqlite/64-workers-4                384.0 ±  2%    400.0 ±  0%    +4.17% (p=0.001 n=7)
Update/dqlite/128-workers-4               414.0 ± 10%    400.0 ±  0%    -3.38% (p=0.026 n=7)
geomean                                   168.8          168.3          -0.30%
¹ all samples are equal

                                        │        Before         │                    After                     │
                                        │ network-bytes-read/op │ network-bytes-read/op  vs base               │
Compaction/dqlite-4                               2.015Ki ± 55%           1.711Ki ± 43%  -15.08% (p=0.026 n=7)
Create/dqlite/1-workers-4                           242.4 ±  0%             242.1 ±  0%        ~ (p=0.119 n=7)
Create/dqlite/4-workers-4                           243.0 ±  0%             242.9 ±  0%        ~ (p=0.112 n=7)
Create/dqlite/16-workers-4                          243.1 ±  0%             242.8 ±  0%        ~ (p=0.076 n=7)
Create/dqlite/64-workers-4                          243.0 ±  1%             243.1 ±  0%        ~ (p=1.000 n=7)
Create/dqlite/128-workers-4                         243.2 ±  0%             243.0 ±  0%        ~ (p=0.176 n=7)
Delete/dqlite/1-workers-4                           719.8 ±  0%             719.6 ±  0%        ~ (p=0.117 n=7)
Delete/dqlite/4-workers-4                           721.0 ±  0%             720.8 ±  0%   -0.03% (p=0.005 n=7)
Delete/dqlite/16-workers-4                          720.9 ± 12%             720.6 ±  0%        ~ (p=0.165 n=7)
Delete/dqlite/64-workers-4                          721.1 ±  9%             720.8 ± 12%        ~ (p=0.216 n=7)
Delete/dqlite/128-workers-4                         721.0 ±  0%             720.9 ± 12%        ~ (p=0.273 n=7)
Get/dqlite-4                                       1160.0 ±  0%             820.0 ±  0%  -29.31% (p=0.001 n=7)
List/dqlite-tiny/all-4                              212.3 ±  7%             158.4 ± 20%  -25.39% (p=0.001 n=7)
List/dqlite-tiny/pagination-4                       199.3 ±  2%             146.0 ± 15%  -26.74% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4                    1.384Ki ± 12%           1.205Ki ± 22%        ~ (p=0.710 n=7)
List/dqlite-fits-in-page/pagination-4             1.336Ki ±  4%           1.476Ki ± 32%        ~ (p=0.073 n=7)
List/dqlite-overflows-page/all-4                  7.071Ki ±  2%           7.448Ki ± 26%        ~ (p=0.710 n=7)
List/dqlite-overflows-page/pagination-4           7.133Ki ± 10%           7.341Ki ± 15%        ~ (p=0.259 n=7)
Update/dqlite/1-workers-4                           263.1 ±  0%             263.1 ±  0%        ~ (p=0.073 n=7)
Update/dqlite/4-workers-4                           263.5 ±  0%             263.3 ±  0%   -0.08% (p=0.019 n=7)
Update/dqlite/16-workers-4                          263.5 ±  1%             263.2 ±  0%        ~ (p=0.671 n=7)
Update/dqlite/64-workers-4                          264.9 ±  2%             262.7 ±  0%   -0.83% (p=0.025 n=7)
Update/dqlite/128-workers-4                         285.0 ± 12%             262.2 ±  0%   -8.00% (p=0.017 n=7)
geomean                                             569.3                   541.0         -4.96%

                                        │          Before          │                      After                      │
                                        │ network-bytes-written/op │ network-bytes-written/op  vs base               │
Compaction/dqlite-4                                    4.608 ± 11%                4.454 ±  7%   -3.34% (p=0.026 n=7)
Create/dqlite/1-workers-4                              117.7 ±  0%                117.3 ±  0%   -0.34% (p=0.039 n=7)
Create/dqlite/4-workers-4                              118.9 ±  0%                118.8 ±  1%        ~ (p=0.396 n=7)
Create/dqlite/16-workers-4                             119.0 ±  0%                118.5 ±  1%        ~ (p=0.062 n=7)
Create/dqlite/64-workers-4                             118.8 ±  2%                119.1 ±  0%        ~ (p=0.265 n=7)
Create/dqlite/128-workers-4                            119.1 ±  1%                119.2 ±  1%        ~ (p=1.000 n=7)
Delete/dqlite/1-workers-4                              83.29 ±  0%                83.16 ±  1%   -0.16% (p=0.049 n=7)
Delete/dqlite/4-workers-4                              83.83 ±  0%                83.70 ±  1%   -0.16% (p=0.001 n=7)
Delete/dqlite/16-workers-4                             83.81 ± 35%                83.55 ±  1%        ~ (p=0.073 n=7)
Delete/dqlite/64-workers-4                             83.80 ± 25%                83.66 ± 33%        ~ (p=0.079 n=7)
Delete/dqlite/128-workers-4                            83.83 ±  0%                83.73 ± 33%        ~ (p=0.066 n=7)
Get/dqlite-4                                           80.56 ±  0%                88.53 ±  0%   +9.89% (p=0.001 n=7)
List/dqlite-tiny/all-4                               0.04670 ± 14%              0.03190 ± 40%  -31.69% (p=0.004 n=7)
List/dqlite-tiny/pagination-4                        0.04943 ±  5%              0.02940 ± 28%  -40.52% (p=0.001 n=7)
List/dqlite-fits-in-page/all-4                       0.06412 ± 20%              0.05252 ± 37%        ~ (p=0.902 n=7)
List/dqlite-fits-in-page/pagination-4                0.08724 ± 16%              0.07907 ± 46%        ~ (p=0.165 n=7)
List/dqlite-overflows-page/all-4                     0.08014 ±  4%              0.08876 ± 40%        ~ (p=0.710 n=7)
List/dqlite-overflows-page/pagination-4              0.14190 ± 21%              0.09565 ±  7%  -32.59% (p=0.001 n=7)
Update/dqlite/1-workers-4                              136.7 ±  0%                136.7 ±  0%        ~ (p=0.612 n=7)
Update/dqlite/4-workers-4                              136.7 ±  0%                137.0 ±  0%        ~ (p=0.174 n=7)
Update/dqlite/16-workers-4                             136.8 ±  1%                137.0 ±  0%        ~ (p=0.355 n=7)
Update/dqlite/64-workers-4                             137.9 ±  3%                137.0 ±  0%        ~ (p=0.099 n=7)
Update/dqlite/128-workers-4                            148.7 ± 10%                136.7 ±  0%   -8.07% (p=0.022 n=7)
geomean                                                14.11                      13.20         -6.44%
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                       18.85µ ±   2%
Compaction/dqlite-4                       39.97µ ±   8%
Create/sqlite/1-workers-4                 415.5µ ±   3%
Create/sqlite/4-workers-4                 386.9µ ±   5%
Create/sqlite/16-workers-4                352.7µ ±  14%
Create/sqlite/64-workers-4                353.1µ ±  22%
Create/sqlite/128-workers-4               434.2µ ± 147%
Create/dqlite/1-workers-4                 905.5µ ±   9%
Create/dqlite/4-workers-4                 826.3µ ±   3%
Create/dqlite/16-workers-4                839.8µ ±   3%
Create/dqlite/64-workers-4                830.0µ ±   3%
Create/dqlite/128-workers-4               808.2µ ±   4%
Delete/sqlite/1-workers-4                 414.0µ ±   1%
Delete/sqlite/4-workers-4                 385.4µ ±   2%
Delete/sqlite/16-workers-4                353.0µ ±  10%
Delete/sqlite/64-workers-4                362.3µ ±   8%
Delete/sqlite/128-workers-4               450.4µ ±  73%
Delete/dqlite/1-workers-4                 922.9µ ±   5%
Delete/dqlite/4-workers-4                 833.6µ ±   9%
Delete/dqlite/16-workers-4                823.2µ ±   4%
Delete/dqlite/64-workers-4                812.9µ ±   5%
Delete/dqlite/128-workers-4               808.4µ ±   5%
Get/sqlite-4                              221.0µ ±   1%
Get/dqlite-4                              334.4µ ±   1%
List/sqlite-tiny/all-4                    3.708µ ±   7%
List/sqlite-tiny/pagination-4             4.864µ ±  11%
List/sqlite-fits-in-page/all-4            6.778µ ±   4%
List/sqlite-fits-in-page/pagination-4     8.018µ ±   4%
List/sqlite-overflows-page/all-4          19.38µ ±  12%
List/sqlite-overflows-page/pagination-4   16.09µ ±  13%
List/dqlite-tiny/all-4                    2.327µ ±  19%
List/dqlite-tiny/pagination-4             3.184µ ±   6%
List/dqlite-fits-in-page/all-4            7.152µ ±  16%
List/dqlite-fits-in-page/pagination-4     8.878µ ±  22%
List/dqlite-overflows-page/all-4          27.55µ ±  24%
List/dqlite-overflows-page/pagination-4   26.95µ ±   7%
Update/sqlite/1-workers-4                 406.1µ ±   1%
Update/sqlite/4-workers-4                 387.3µ ±   4%
Update/sqlite/16-workers-4                358.7µ ±   3%
Update/sqlite/64-workers-4                347.6µ ±  28%
Update/sqlite/128-workers-4               378.8µ ± 124%
Update/dqlite/1-workers-4                 890.9µ ±   3%
Update/dqlite/4-workers-4                 803.7µ ±   2%
Update/dqlite/16-workers-4                794.4µ ±   2%
Update/dqlite/64-workers-4                798.5µ ±   3%
Update/dqlite/128-workers-4               790.6µ ±   3%
geomean                                   159.7µ

                                        │        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 ±  1%
Compaction/dqlite-4                         12.21 ±  1%
Create/sqlite/1-workers-4                   13.99 ±  0%
Create/sqlite/4-workers-4                   12.14 ±  3%
Create/sqlite/16-workers-4                  10.08 ±  5%
Create/sqlite/64-workers-4                  8.442 ±  5%
Create/sqlite/128-workers-4                 8.009 ±  5%
Create/dqlite/1-workers-4                   13.74 ±  1%
Create/dqlite/4-workers-4                   11.20 ±  1%
Create/dqlite/16-workers-4                  11.21 ±  1%
Create/dqlite/64-workers-4                  11.27 ±  1%
Create/dqlite/128-workers-4                 11.28 ±  1%
Delete/sqlite/1-workers-4                   16.23 ±  0%
Delete/sqlite/4-workers-4                   13.94 ±  5%
Delete/sqlite/16-workers-4                  11.18 ±  2%
Delete/sqlite/64-workers-4                  9.401 ±  4%
Delete/sqlite/128-workers-4                 8.906 ±  4%
Delete/dqlite/1-workers-4                   16.15 ±  1%
Delete/dqlite/4-workers-4                   13.63 ±  1%
Delete/dqlite/16-workers-4                  13.63 ±  1%
Delete/dqlite/64-workers-4                  13.57 ±  2%
Delete/dqlite/128-workers-4                 13.55 ±  4%
Get/sqlite-4                                16.98 ± 24%
Get/dqlite-4                                12.99 ±  0%
List/sqlite-tiny/all-4                     191.1m ±  0%
List/sqlite-tiny/pagination-4              194.6m ±  2%
List/sqlite-fits-in-page/all-4             163.9m ±  0%
List/sqlite-fits-in-page/pagination-4      166.0m ±  0%
List/sqlite-overflows-page/all-4           186.0m ±  1%
List/sqlite-overflows-page/pagination-4    182.8m ±  2%
List/dqlite-tiny/all-4                     190.0m ±  1%
List/dqlite-tiny/pagination-4              190.0m ±  0%
List/dqlite-fits-in-page/all-4             163.1m ±  1%
List/dqlite-fits-in-page/pagination-4      166.2m ±  2%
List/dqlite-overflows-page/all-4           184.9m ±  2%
List/dqlite-overflows-page/pagination-4    186.5m ±  1%
Update/sqlite/1-workers-4                   15.90 ±  0%
Update/sqlite/4-workers-4                   14.32 ±  3%
Update/sqlite/16-workers-4                  11.76 ±  2%
Update/sqlite/64-workers-4                  10.17 ±  9%
Update/sqlite/128-workers-4                 9.740 ±  3%
Update/dqlite/1-workers-4                   15.63 ±  1%
Update/dqlite/4-workers-4                   13.16 ±  1%
Update/dqlite/16-workers-4                  13.10 ±  1%
Update/dqlite/64-workers-4                  13.07 ±  1%
Update/dqlite/128-workers-4                 12.99 ±  1%
geomean                                     4.090

                                        │     After      │
                                        │ page-writes/op │
Compaction/sqlite-4                        191.0m ± 0%
Compaction/dqlite-4                        188.5m ± 0%
Create/sqlite/1-workers-4                   4.379 ± 0%
Create/sqlite/4-workers-4                   4.341 ± 1%
Create/sqlite/16-workers-4                  4.308 ± 0%
Create/sqlite/64-workers-4                  4.299 ± 1%
Create/sqlite/128-workers-4                 4.233 ± 1%
Create/dqlite/1-workers-4                   4.304 ± 0%
Create/dqlite/4-workers-4                   4.330 ± 0%
Create/dqlite/16-workers-4                  4.325 ± 0%
Create/dqlite/64-workers-4                  4.325 ± 0%
Create/dqlite/128-workers-4                 4.325 ± 0%
Delete/sqlite/1-workers-4                   4.397 ± 0%
Delete/sqlite/4-workers-4                   4.390 ± 1%
Delete/sqlite/16-workers-4                  4.361 ± 1%
Delete/sqlite/64-workers-4                  4.389 ± 1%
Delete/sqlite/128-workers-4                 4.379 ± 2%
Delete/dqlite/1-workers-4                   4.397 ± 0%
Delete/dqlite/4-workers-4                   4.403 ± 0%
Delete/dqlite/16-workers-4                  4.405 ± 0%
Delete/dqlite/64-workers-4                  4.380 ± 1%
Delete/dqlite/128-workers-4                 4.365 ± 1%
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.251 ± 0%
Update/sqlite/4-workers-4                   4.338 ± 0%
Update/sqlite/16-workers-4                  4.321 ± 1%
Update/sqlite/64-workers-4                  4.320 ± 1%
Update/sqlite/128-workers-4                 4.303 ± 1%
Update/dqlite/1-workers-4                   4.224 ± 0%
Update/dqlite/4-workers-4                   4.247 ± 0%
Update/dqlite/16-workers-4                  4.244 ± 1%
Update/dqlite/64-workers-4                  4.266 ± 1%
Update/dqlite/128-workers-4                 4.270 ± 1%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After      │
                                        │ sec-reading/op │
Compaction/sqlite-4                         25.50µ ±  8%
Compaction/dqlite-4                         29.10µ ± 30%
Create/sqlite/1-workers-4                   21.40µ ± 25%
Create/sqlite/4-workers-4                   21.00µ ± 16%
Create/sqlite/16-workers-4                  23.40µ ± 26%
Create/sqlite/64-workers-4                  22.60µ ± 30%
Create/sqlite/128-workers-4                 24.90µ ± 18%
Create/dqlite/1-workers-4                   12.30µ ± 50%
Create/dqlite/4-workers-4                   10.80µ ± 26%
Create/dqlite/16-workers-4                  11.40µ ± 34%
Create/dqlite/64-workers-4                  10.10µ ± 44%
Create/dqlite/128-workers-4                 12.30µ ± 56%
Delete/sqlite/1-workers-4                   34.10µ ±  8%
Delete/sqlite/4-workers-4                   34.10µ ± 12%
Delete/sqlite/16-workers-4                  39.30µ ± 18%
Delete/sqlite/64-workers-4                  42.10µ ± 16%
Delete/sqlite/128-workers-4                 49.60µ ± 33%
Delete/dqlite/1-workers-4                   18.50µ ± 18%
Delete/dqlite/4-workers-4                   15.30µ ± 45%
Delete/dqlite/16-workers-4                  17.80µ ± 30%
Delete/dqlite/64-workers-4                  15.50µ ± 52%
Delete/dqlite/128-workers-4                 17.00µ ± 31%
Get/sqlite-4                                53.40µ ±  7%
Get/dqlite-4                                23.60µ ± 28%
List/sqlite-tiny/all-4                      6.200µ ± 16%
List/sqlite-tiny/pagination-4               9.100µ ± 34%
List/sqlite-fits-in-page/all-4              11.30µ ±  4%
List/sqlite-fits-in-page/pagination-4       13.30µ ±  6%
List/sqlite-overflows-page/all-4            30.80µ ± 30%
List/sqlite-overflows-page/pagination-4     14.70µ ± 56%
List/dqlite-tiny/all-4                      2.600µ ± 58%
List/dqlite-tiny/pagination-4               3.700µ ± 22%
List/dqlite-fits-in-page/all-4              7.400µ ± 45%
List/dqlite-fits-in-page/pagination-4       12.10µ ± 41%
List/dqlite-overflows-page/all-4            34.10µ ± 28%
List/dqlite-overflows-page/pagination-4     35.10µ ± 10%
Update/sqlite/1-workers-4                   22.20µ ± 19%
Update/sqlite/4-workers-4                   22.70µ ± 18%
Update/sqlite/16-workers-4                  24.80µ ± 17%
Update/sqlite/64-workers-4                  25.90µ ± 18%
Update/sqlite/128-workers-4                 28.60µ ± 19%
Update/dqlite/1-workers-4                   8.800µ ± 31%
Update/dqlite/4-workers-4                   12.60µ ± 53%
Update/dqlite/16-workers-4                  10.50µ ± 69%
Update/dqlite/64-workers-4                  13.20µ ± 42%
Update/dqlite/128-workers-4                 8.800µ ± 51%
geomean                                     17.18µ

                                        │     After      │
                                        │ sec-writing/op │
Compaction/sqlite-4                       9.300µ ±  5%
Compaction/dqlite-4                       7.100µ ±  3%
Create/sqlite/1-workers-4                 186.1µ ±  2%
Create/sqlite/4-workers-4                 1.198m ± 10%
Create/sqlite/16-workers-4                4.300m ± 12%
Create/sqlite/64-workers-4                14.51m ±  5%
Create/sqlite/128-workers-4               28.66m ± 21%
Create/dqlite/1-workers-4                 36.20µ ± 27%
Create/dqlite/4-workers-4                 46.20µ ± 13%
Create/dqlite/16-workers-4                45.80µ ± 24%
Create/dqlite/64-workers-4                49.90µ ± 14%
Create/dqlite/128-workers-4               43.30µ ± 22%
Delete/sqlite/1-workers-4                 189.7µ ±  5%
Delete/sqlite/4-workers-4                 1.158m ± 18%
Delete/sqlite/16-workers-4                4.479m ±  4%
Delete/sqlite/64-workers-4                14.86m ±  5%
Delete/sqlite/128-workers-4               28.30m ±  7%
Delete/dqlite/1-workers-4                 39.60µ ± 34%
Delete/dqlite/4-workers-4                 53.00µ ± 12%
Delete/dqlite/16-workers-4                50.40µ ±  9%
Delete/dqlite/64-workers-4                50.70µ ± 18%
Delete/dqlite/128-workers-4               49.80µ ± 21%
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                 182.6µ ±  3%
Update/sqlite/4-workers-4                 1.221m ± 14%
Update/sqlite/16-workers-4                4.530m ±  6%
Update/sqlite/64-workers-4                15.11m ±  3%
Update/sqlite/128-workers-4               27.62m ± 24%
Update/dqlite/1-workers-4                 34.40µ ± 19%
Update/dqlite/4-workers-4                 43.60µ ± 16%
Update/dqlite/16-workers-4                46.80µ ± 18%
Update/dqlite/64-workers-4                45.80µ ± 14%
Update/dqlite/128-workers-4               43.70µ ± 28%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │     B/op      │
Compaction/sqlite-4                       2.172Ki ±  6%
Compaction/dqlite-4                       4.740Ki ± 42%
Create/sqlite/1-workers-4                 20.45Ki ±  0%
Create/sqlite/4-workers-4                 20.42Ki ±  0%
Create/sqlite/16-workers-4                20.40Ki ±  0%
Create/sqlite/64-workers-4                20.45Ki ±  0%
Create/sqlite/128-workers-4               20.56Ki ±  2%
Create/dqlite/1-workers-4                 19.96Ki ±  0%
Create/dqlite/4-workers-4                 19.98Ki ±  0%
Create/dqlite/16-workers-4                20.03Ki ±  0%
Create/dqlite/64-workers-4                20.05Ki ±  0%
Create/dqlite/128-workers-4               20.10Ki ±  0%
Delete/sqlite/1-workers-4                 23.01Ki ±  0%
Delete/sqlite/4-workers-4                 23.00Ki ±  0%
Delete/sqlite/16-workers-4                22.95Ki ±  0%
Delete/sqlite/64-workers-4                22.98Ki ±  0%
Delete/sqlite/128-workers-4               23.13Ki ±  2%
Delete/dqlite/1-workers-4                 22.58Ki ±  0%
Delete/dqlite/4-workers-4                 22.57Ki ±  1%
Delete/dqlite/16-workers-4                22.59Ki ±  0%
Delete/dqlite/64-workers-4                22.62Ki ±  9%
Delete/dqlite/128-workers-4               22.64Ki ±  9%
Get/sqlite-4                              22.43Ki ±  0%
Get/dqlite-4                              21.55Ki ±  0%
List/sqlite-tiny/all-4                    1.088Ki ±  5%
List/sqlite-tiny/pagination-4             1.195Ki ± 28%
List/sqlite-fits-in-page/all-4            6.027Ki ±  4%
List/sqlite-fits-in-page/pagination-4     5.666Ki ±  4%
List/sqlite-overflows-page/all-4          27.32Ki ± 12%
List/sqlite-overflows-page/pagination-4   17.24Ki ± 23%
List/dqlite-tiny/all-4                      935.0 ±  9%
List/dqlite-tiny/pagination-4               761.0 ± 10%
List/dqlite-fits-in-page/all-4            5.735Ki ± 10%
List/dqlite-fits-in-page/pagination-4     5.401Ki ± 20%
List/dqlite-overflows-page/all-4          29.09Ki ± 16%
List/dqlite-overflows-page/pagination-4   26.84Ki ± 12%
Update/sqlite/1-workers-4                 22.15Ki ±  0%
Update/sqlite/4-workers-4                 22.12Ki ±  0%
Update/sqlite/16-workers-4                22.06Ki ±  0%
Update/sqlite/64-workers-4                22.08Ki ±  1%
Update/sqlite/128-workers-4               22.15Ki ±  5%
Update/dqlite/1-workers-4                 22.32Ki ±  0%
Update/dqlite/4-workers-4                 22.22Ki ±  0%
Update/dqlite/16-workers-4                22.26Ki ±  0%
Update/dqlite/64-workers-4                22.30Ki ±  0%
Update/dqlite/128-workers-4               22.29Ki ±  0%
geomean                                   13.73Ki

                                        │    After    │
                                        │  allocs/op  │
Compaction/sqlite-4                       46.00 ±  4%
Compaction/dqlite-4                       114.0 ± 43%
Create/sqlite/1-workers-4                 397.0 ±  0%
Create/sqlite/4-workers-4                 397.0 ±  0%
Create/sqlite/16-workers-4                396.0 ±  0%
Create/sqlite/64-workers-4                397.0 ±  0%
Create/sqlite/128-workers-4               399.0 ±  1%
Create/dqlite/1-workers-4                 372.0 ±  0%
Create/dqlite/4-workers-4                 372.0 ±  0%
Create/dqlite/16-workers-4                373.0 ±  0%
Create/dqlite/64-workers-4                373.0 ±  0%
Create/dqlite/128-workers-4               373.0 ±  0%
Delete/sqlite/1-workers-4                 431.0 ±  0%
Delete/sqlite/4-workers-4                 431.0 ±  0%
Delete/sqlite/16-workers-4                429.0 ±  0%
Delete/sqlite/64-workers-4                430.0 ±  1%
Delete/sqlite/128-workers-4               431.0 ±  2%
Delete/dqlite/1-workers-4                 409.0 ±  0%
Delete/dqlite/4-workers-4                 408.0 ±  0%
Delete/dqlite/16-workers-4                409.0 ±  0%
Delete/dqlite/64-workers-4                409.0 ± 12%
Delete/dqlite/128-workers-4               409.0 ± 12%
Get/sqlite-4                              418.0 ±  0%
Get/dqlite-4                              398.0 ±  0%
List/sqlite-tiny/all-4                    14.00 ± 14%
List/sqlite-tiny/pagination-4             18.00 ± 33%
List/sqlite-fits-in-page/all-4            19.00 ± 11%
List/sqlite-fits-in-page/pagination-4     22.00 ±  9%
List/sqlite-overflows-page/all-4          28.00 ± 18%
List/sqlite-overflows-page/pagination-4   17.00 ± 41%
List/dqlite-tiny/all-4                    11.00 ± 18%
List/dqlite-tiny/pagination-4             10.00 ± 10%
List/dqlite-fits-in-page/all-4            16.00 ± 25%
List/dqlite-fits-in-page/pagination-4     20.00 ± 30%
List/dqlite-overflows-page/all-4          34.00 ± 29%
List/dqlite-overflows-page/pagination-4   32.00 ± 16%
Update/sqlite/1-workers-4                 415.0 ±  0%
Update/sqlite/4-workers-4                 414.0 ±  0%
Update/sqlite/16-workers-4                412.0 ±  0%
Update/sqlite/64-workers-4                413.0 ±  0%
Update/sqlite/128-workers-4               414.0 ±  5%
Update/dqlite/1-workers-4                 403.0 ±  0%
Update/dqlite/4-workers-4                 400.0 ±  0%
Update/dqlite/16-workers-4                400.0 ±  0%
Update/dqlite/64-workers-4                400.0 ±  0%
Update/dqlite/128-workers-4               400.0 ±  0%
geomean                                   168.3

                                        │         After         │
                                        │ network-bytes-read/op │
Compaction/dqlite-4                               1.711Ki ± 43%
Create/dqlite/1-workers-4                           242.1 ±  0%
Create/dqlite/4-workers-4                           242.9 ±  0%
Create/dqlite/16-workers-4                          242.8 ±  0%
Create/dqlite/64-workers-4                          243.1 ±  0%
Create/dqlite/128-workers-4                         243.0 ±  0%
Delete/dqlite/1-workers-4                           719.6 ±  0%
Delete/dqlite/4-workers-4                           720.8 ±  0%
Delete/dqlite/16-workers-4                          720.6 ±  0%
Delete/dqlite/64-workers-4                          720.8 ± 12%
Delete/dqlite/128-workers-4                         720.9 ± 12%
Get/dqlite-4                                        820.0 ±  0%
List/dqlite-tiny/all-4                              158.4 ± 20%
List/dqlite-tiny/pagination-4                       146.0 ± 15%
List/dqlite-fits-in-page/all-4                    1.205Ki ± 22%
List/dqlite-fits-in-page/pagination-4             1.476Ki ± 32%
List/dqlite-overflows-page/all-4                  7.448Ki ± 26%
List/dqlite-overflows-page/pagination-4           7.341Ki ± 15%
Update/dqlite/1-workers-4                           263.1 ±  0%
Update/dqlite/4-workers-4                           263.3 ±  0%
Update/dqlite/16-workers-4                          263.2 ±  0%
Update/dqlite/64-workers-4                          262.7 ±  0%
Update/dqlite/128-workers-4                         262.2 ±  0%
geomean                                             541.0

                                        │          After           │
                                        │ network-bytes-written/op │
Compaction/dqlite-4                                    4.454 ±  7%
Create/dqlite/1-workers-4                              117.3 ±  0%
Create/dqlite/4-workers-4                              118.8 ±  1%
Create/dqlite/16-workers-4                             118.5 ±  1%
Create/dqlite/64-workers-4                             119.1 ±  0%
Create/dqlite/128-workers-4                            119.2 ±  1%
Delete/dqlite/1-workers-4                              83.16 ±  1%
Delete/dqlite/4-workers-4                              83.70 ±  1%
Delete/dqlite/16-workers-4                             83.55 ±  1%
Delete/dqlite/64-workers-4                             83.66 ± 33%
Delete/dqlite/128-workers-4                            83.73 ± 33%
Get/dqlite-4                                           88.53 ±  0%
List/dqlite-tiny/all-4                               0.03190 ± 40%
List/dqlite-tiny/pagination-4                        0.02940 ± 28%
List/dqlite-fits-in-page/all-4                       0.05252 ± 37%
List/dqlite-fits-in-page/pagination-4                0.07907 ± 46%
List/dqlite-overflows-page/all-4                     0.08876 ± 40%
List/dqlite-overflows-page/pagination-4              0.09565 ±  7%
Update/dqlite/1-workers-4                              136.7 ±  0%
Update/dqlite/4-workers-4                              137.0 ±  0%
Update/dqlite/16-workers-4                             137.0 ±  0%
Update/dqlite/64-workers-4                             137.0 ±  0%
Update/dqlite/128-workers-4                            136.7 ±  0%
geomean                                                13.20

@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.

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