Skip to content

Latest commit

 

History

History
1071 lines (1061 loc) · 36.9 KB

hetzner_cax11.md

File metadata and controls

1071 lines (1061 loc) · 36.9 KB

PocketBase 0.23.x

Creating organizations (100)

Creating 50 organizations [reqs:50, conc:10, rule:""]

┌─ Best:      2.59579ms
├─ Worst:     14.881942ms
├─ Completed: 33.107072ms
└─ Errors:    0

Creating 50 organizations [reqs:50, conc:10, rule:"@request.body.name != ''"]

┌─ Best:      1.737673ms
├─ Worst:     17.055895ms
├─ Completed: 35.486545ms
└─ Errors:    0

Creating permissions (50)

Creating 25 permissions [reqs:25, conc:5, rule:""]

┌─ Best:      2.920229ms
├─ Worst:     8.364488ms
├─ Completed: 26.976578ms
└─ Errors:    0

Creating 25 permissions [reqs:25, conc:5, rule:"@request.body.name != ''"]

┌─ Best:      1.895673ms
├─ Worst:     7.571731ms
├─ Completed: 21.22576ms
└─ Errors:    0

Creating users (500 - expected to be slow due to passwordHash generation)

Creating 250 users [reqs:250, conc:50, rule:""]

┌─ Best:      1.720336774s
├─ Worst:     4.952529023s
├─ Completed: 17.570934236s
└─ Errors:    0

Creating 250 users [reqs:250, conc:50, rule:"@request.body.email != '' && @request.body.permissions:length > 0"]

┌─ Best:      1.558033521s
├─ Worst:     4.666013092s
├─ Completed: 17.502768159s
└─ Errors:    0

Creating posts (10k, 25k, 50k, 100k)

Creating 5000 posts10k [reqs:5000, conc:500, rule:""]

┌─ Best:      3.562909ms
├─ Worst:     2.593383177s
├─ Completed: 4.744757477s
└─ Errors:    0

Creating 5000 posts10k [reqs:5000, conc:500, rule:"@request.auth.id != '' && @request.body.public:isset = true"]

┌─ Best:      9.400932ms
├─ Worst:     2.798994782s
├─ Completed: 5.783553257s
└─ Errors:    0

Creating 12500 posts25k [reqs:12500, conc:500, rule:""]

┌─ Best:      6.494901ms
├─ Worst:     4.33557897s
├─ Completed: 30.666719655s
└─ Errors:    0

Creating 12500 posts25k [reqs:12500, conc:500, rule:"@request.auth.id != '' && @request.body.public:isset = true"]

┌─ Best:      5.961467ms
├─ Worst:     3.89505289s
├─ Completed: 22.384762263s
└─ Errors:    0

Creating 25000 posts50k [reqs:25000, conc:500, rule:""]

┌─ Best:      4.207551ms
├─ Worst:     4.029974796s
├─ Completed: 52.594894035s
└─ Errors:    0

Creating 25000 posts50k [reqs:25000, conc:500, rule:"@request.auth.id != '' && @request.body.public:isset = true"]

┌─ Best:      4.260076ms
├─ Worst:     5.380606961s
├─ Completed: 46.619136244s
└─ Errors:    0

Creating 50000 posts100k [reqs:50000, conc:500, rule:""]

┌─ Best:      4.791997ms
├─ Worst:     4.292780112s
├─ Completed: 1m34.652497659s
└─ Errors:    0

Creating 50000 posts100k [reqs:50000, conc:500, rule:"@request.auth.id != '' && @request.body.public:isset = true"]

┌─ Best:      6.99836ms
├─ Worst:     5.382612788s
├─ Completed: 1m48.742289247s
└─ Errors:    0

User auth with password (expected to be slow due to passwordHash verification)

users auth with email/pass - high concurrency [reqs:250, conc:250]

┌─ Best:      7.516568255s
├─ Worst:     9.098041941s
├─ Completed: 9.106779789s
└─ Errors:    0

users auth with email/pass - small concurrency [reqs:250, conc:10]

┌─ Best:      122.835609ms
├─ Worst:     504.815141ms
├─ Completed: 8.908589803s
└─ Errors:    0

User auth refresh

users - auth refresh (high concurrency) [reqs:1000, conc:1000]

┌─ Best:      144.887434ms
├─ Worst:     380.512444ms
├─ Completed: 393.184417ms
└─ Errors:    0

users - auth refresh (medium concurrency) [reqs:1000, conc:100]

┌─ Best:      1.063921ms
├─ Worst:     73.234798ms
├─ Completed: 333.576479ms
└─ Errors:    0

List records

users - getOne for auth refresh comparison (high concurrency) [reqs:1000, conc:1000, rule:"", query:/v69wvx0465rz96p]

┌─ Best:      124.225416ms
├─ Worst:     482.033408ms
├─ Completed: 483.97117ms
└─ Errors:    0

users - getOne for auth refresh comparison (medium concurrency) [reqs:1000, conc:100, rule:"", query:/v69wvx0465rz96p]

┌─ Best:      2.458802ms
├─ Worst:     158.862176ms
├─ Completed: 429.722436ms
└─ Errors:    0

posts10k - simpleA (many requests, no rules, no concurrency) [reqs:1000, conc:1, rule:"", query:?perPage=20]

┌─ Best:      2.167403ms
├─ Worst:     6.835568ms
├─ Completed: 3.217031014s
└─ Errors:    0

posts10k - simpleB (many requests, no rules, high concurrency) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      285.547331ms
├─ Worst:     1.516129406s
├─ Completed: 1.530132863s
└─ Errors:    0

posts10k - simpleC (many requests, no rules, high concurrency, skipTotal) [reqs:1000, conc:1000, rule:"", query:?perPage=20&skipTotal=1]

┌─ Best:      195.781992ms
├─ Worst:     938.463514ms
├─ Completed: 954.460533ms
└─ Errors:    0

posts10k - mixed read and write (simpleA list with additional 300 concurrent random posts10k updates running in the background) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      239.65465ms
├─ Worst:     1.837399622s
├─ Completed: 1.842157868s
└─ Errors:    0

posts10k - expand author [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author]

┌─ Best:      5.339447ms
├─ Worst:     37.876047ms
├─ Completed: 210.511499ms
└─ Errors:    0

posts10k - expand author (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author&fields=id,collectionId,expand.author.id]

┌─ Best:      9.466571ms
├─ Worst:     59.820195ms
├─ Completed: 292.203924ms
└─ Errors:    0

posts10k - expand author.permissions [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions]

┌─ Best:      11.288135ms
├─ Worst:     110.039618ms
├─ Completed: 346.361916ms
└─ Errors:    0

posts10k - expand author.permissions (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions&fields=id,collectionId,expand.author.id,expand.author.expand.permissions.id]

┌─ Best:      16.219341ms
├─ Worst:     76.728618ms
├─ Completed: 439.877682ms
└─ Errors:    0

posts10k - simple auth rule [reqs:100, conc:10, rule:"@request.auth.id != ''", query:?perPage=20]

┌─ Best:      3.212684ms
├─ Worst:     37.959369ms
├─ Completed: 160.590047ms
└─ Errors:    0

posts10k - author check (no index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      32.059002ms
├─ Worst:     212.526157ms
├─ Completed: 685.380616ms
└─ Errors:    0

posts10k - author check (with index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      3.363044ms
├─ Worst:     50.713347ms
├─ Completed: 153.024882ms
└─ Errors:    0

posts10k - author check (with index and skipTotal) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      1.447482ms
├─ Worst:     26.514675ms
├─ Completed: 96.643249ms
└─ Errors:    0

posts10k - author.id (extra join) check (no index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      29.74256ms
├─ Worst:     219.009296ms
├─ Completed: 700.444427ms
└─ Errors:    0

posts10k - author.id (extra join) check (with index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      1.792283ms
├─ Worst:     43.259139ms
├─ Completed: 131.52238ms
└─ Errors:    0

posts10k - author.id (extra join) check (with index and skipTotal) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      2.143923ms
├─ Worst:     29.16956ms
├─ Completed: 110.033433ms
└─ Errors:    0

posts10k - loose large text search (no index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      20.087428ms
├─ Worst:     130.712542ms
├─ Completed: 527.820016ms
└─ Errors:    0

posts10k - loose large text search (with index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      21.161229ms
├─ Worst:     103.179746ms
├─ Completed: 509.32844ms
└─ Errors:    0

posts10k - loose large text search (with index and skipTotal) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.155444ms
├─ Worst:     49.413551ms
├─ Completed: 137.531916ms
└─ Errors:    0

posts10k - multiple select :each (no index, match-all) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20]

┌─ Best:      436.053323ms
├─ Worst:     637.670201ms
├─ Completed: 5.676823355s
└─ Errors:    0

posts10k - multiple select :each (no index, match-all, skipTotal) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.096045ms
├─ Worst:     45.788068ms
├─ Completed: 158.246035ms
└─ Errors:    0

posts10k - multiple select :each (no index, at-least-one) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20]

┌─ Best:      215.119327ms
├─ Worst:     396.452836ms
├─ Completed: 3.199913512s
└─ Errors:    0

posts10k - multiple select :each (no index, at-least-one, skipTotal) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.022765ms
├─ Worst:     52.14132ms
├─ Completed: 125.102071ms
└─ Errors:    0

posts10k - nested single relations lookup (no indexes) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20]

┌─ Best:      503.443595ms
├─ Worst:     784.151053ms
├─ Completed: 6.605128326s
└─ Errors:    0

posts10k - nested single relations lookup (no indexes, skipTotal) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.445325ms
├─ Worst:     56.933091ms
├─ Completed: 162.178699ms
└─ Errors:    0

posts10k - nested multiple relations lookup (no indexes, match-all) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20]

┌─ Best:      1.529480098s
├─ Worst:     2.279800119s
├─ Completed: 19.405518967s
└─ Errors:    0

posts10k - nested multiple relations lookup (no indexes, match-all, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20&skipTotal=1]

┌─ Best:      17.143469ms
├─ Worst:     98.50073ms
├─ Completed: 445.75073ms
└─ Errors:    0

posts10k - nested multiple relations lookup (no indexes, at-least-one) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20]

┌─ Best:      1.582821179s
├─ Worst:     2.713649977s
├─ Completed: 22.708627474s
└─ Errors:    0

posts10k - nested multiple relations lookup (no indexes, at-least-one, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20&skipTotal=1]

┌─ Best:      3.089645ms
├─ Worst:     65.651203ms
├─ Completed: 191.293558ms
└─ Errors:    0

posts25k - simpleA (many requests, no rules, no concurrency) [reqs:1000, conc:1, rule:"", query:?perPage=20]

┌─ Best:      3.681607ms
├─ Worst:     14.092546ms
├─ Completed: 5.365049822s
└─ Errors:    0

posts25k - simpleB (many requests, no rules, high concurrency) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      186.424998ms
├─ Worst:     2.420842549s
├─ Completed: 2.424723356s
└─ Errors:    0

posts25k - simpleC (many requests, no rules, high concurrency, skipTotal) [reqs:1000, conc:1000, rule:"", query:?perPage=20&skipTotal=1]

┌─ Best:      164.69148ms
├─ Worst:     932.882496ms
├─ Completed: 939.948951ms
└─ Errors:    0

posts25k - mixed read and write (simpleA list with additional 300 concurrent random posts25k updates running in the background) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      205.004762ms
├─ Worst:     2.80101255s
├─ Completed: 2.814494897s
└─ Errors:    0

posts25k - expand author [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author]

┌─ Best:      5.973532ms
├─ Worst:     73.885266ms
├─ Completed: 318.723633ms
└─ Errors:    0

posts25k - expand author (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author&fields=id,collectionId,expand.author.id]

┌─ Best:      6.839814ms
├─ Worst:     68.730738ms
├─ Completed: 346.723932ms
└─ Errors:    0

posts25k - expand author.permissions [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions]

┌─ Best:      9.326778ms
├─ Worst:     89.48226ms
├─ Completed: 405.373015ms
└─ Errors:    0

posts25k - expand author.permissions (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions&fields=id,collectionId,expand.author.id,expand.author.expand.permissions.id]

┌─ Best:      13.964228ms
├─ Worst:     111.736066ms
├─ Completed: 491.743514ms
└─ Errors:    0

posts25k - simple auth rule [reqs:100, conc:10, rule:"@request.auth.id != ''", query:?perPage=20]

┌─ Best:      5.759412ms
├─ Worst:     44.27769ms
├─ Completed: 223.250535ms
└─ Errors:    0

posts25k - author check (no index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      37.006516ms
├─ Worst:     373.463764ms
├─ Completed: 1.248357476s
└─ Errors:    0

posts25k - author check (with index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      2.546006ms
├─ Worst:     82.407329ms
├─ Completed: 162.959616ms
└─ Errors:    0

posts25k - author check (with index and skipTotal) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      2.480645ms
├─ Worst:     34.376191ms
├─ Completed: 104.174896ms
└─ Errors:    0

posts25k - author.id (extra join) check (no index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      35.170153ms
├─ Worst:     275.120813ms
├─ Completed: 1.245838638s
└─ Errors:    0

posts25k - author.id (extra join) check (with index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      2.891926ms
├─ Worst:     78.780085ms
├─ Completed: 173.043043ms
└─ Errors:    0

posts25k - author.id (extra join) check (with index and skipTotal) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      2.221045ms
├─ Worst:     36.142636ms
├─ Completed: 98.600608ms
└─ Errors:    0

posts25k - loose large text search (no index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      47.388421ms
├─ Worst:     237.781545ms
├─ Completed: 1.200187347s
└─ Errors:    0

posts25k - loose large text search (with index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      46.78854ms
├─ Worst:     224.056839ms
├─ Completed: 1.077997666s
└─ Errors:    0

posts25k - loose large text search (with index and skipTotal) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20&skipTotal=1]

┌─ Best:      2.106645ms
├─ Worst:     58.256486ms
├─ Completed: 131.444243ms
└─ Errors:    0

posts25k - multiple select :each (no index, match-all) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20]

┌─ Best:      1.28810879s
├─ Worst:     1.672204996s
├─ Completed: 15.006915087s
└─ Errors:    0

posts25k - multiple select :each (no index, match-all, skipTotal) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.252927ms
├─ Worst:     47.742067ms
├─ Completed: 151.252299ms
└─ Errors:    0

posts25k - multiple select :each (no index, at-least-one) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20]

┌─ Best:      704.208489ms
├─ Worst:     958.7908ms
├─ Completed: 8.020482788s
└─ Errors:    0

posts25k - multiple select :each (no index, at-least-one, skipTotal) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      2.679366ms
├─ Worst:     133.485226ms
├─ Completed: 216.183016ms
└─ Errors:    0

posts25k - nested single relations lookup (no indexes) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20]

┌─ Best:      1.57774839s
├─ Worst:     2.003907266s
├─ Completed: 17.812754448s
└─ Errors:    0

posts25k - nested single relations lookup (no indexes, skipTotal) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20&skipTotal=1]

┌─ Best:      2.808286ms
├─ Worst:     63.850273ms
├─ Completed: 148.922076ms
└─ Errors:    0

posts25k - nested multiple relations lookup (no indexes, match-all) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20]

┌─ Best:      4.042465797s
├─ Worst:     5.023067356s
├─ Completed: 45.63279524s
└─ Errors:    0

posts25k - nested multiple relations lookup (no indexes, match-all, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20&skipTotal=1]

┌─ Best:      20.363613ms
├─ Worst:     165.294907ms
├─ Completed: 609.648138ms
└─ Errors:    0

posts25k - nested multiple relations lookup (no indexes, at-least-one) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20]

┌─ Best:      3.577447018s
├─ Worst:     7.550337138s
├─ Completed: 55.402936095s
└─ Errors:    0

posts25k - nested multiple relations lookup (no indexes, at-least-one, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20&skipTotal=1]

┌─ Best:      3.345009ms
├─ Worst:     132.12153ms
├─ Completed: 270.91232ms
└─ Errors:    0

posts50k - simpleA (many requests, no rules, no concurrency) [reqs:1000, conc:1, rule:"", query:?perPage=20]

┌─ Best:      6.136417ms
├─ Worst:     16.018925ms
├─ Completed: 8.729119378s
└─ Errors:    0

posts50k - simpleB (many requests, no rules, high concurrency) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      446.728512ms
├─ Worst:     3.824814469s
├─ Completed: 3.857823523s
└─ Errors:    0

posts50k - simpleC (many requests, no rules, high concurrency, skipTotal) [reqs:1000, conc:1000, rule:"", query:?perPage=20&skipTotal=1]

┌─ Best:      69.851961ms
├─ Worst:     966.03665ms
├─ Completed: 976.012998ms
└─ Errors:    0

posts50k - mixed read and write (simpleA list with additional 300 concurrent random posts50k updates running in the background) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      273.557827ms
├─ Worst:     4.309732981s
├─ Completed: 4.32305534s
└─ Errors:    0

posts50k - expand author [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author]

┌─ Best:      10.826751ms
├─ Worst:     98.715806ms
├─ Completed: 408.535743ms
└─ Errors:    0

posts50k - expand author (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author&fields=id,collectionId,expand.author.id]

┌─ Best:      9.905629ms
├─ Worst:     92.627429ms
├─ Completed: 471.966331ms
└─ Errors:    0

posts50k - expand author.permissions [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions]

┌─ Best:      11.693554ms
├─ Worst:     144.13598ms
├─ Completed: 537.654966ms
└─ Errors:    0

posts50k - expand author.permissions (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions&fields=id,collectionId,expand.author.id,expand.author.expand.permissions.id]

┌─ Best:      13.67984ms
├─ Worst:     143.94266ms
├─ Completed: 632.480807ms
└─ Errors:    0

posts50k - simple auth rule [reqs:100, conc:10, rule:"@request.auth.id != ''", query:?perPage=20]

┌─ Best:      10.36779ms
├─ Worst:     82.682882ms
├─ Completed: 368.280518ms
└─ Errors:    0

posts50k - author check (no index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      138.236247ms
├─ Worst:     485.126064ms
├─ Completed: 2.641930248s
└─ Errors:    0

posts50k - author check (with index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      3.745731ms
├─ Worst:     50.78415ms
├─ Completed: 148.684839ms
└─ Errors:    0

posts50k - author check (with index and skipTotal) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      2.061206ms
├─ Worst:     31.195892ms
├─ Completed: 99.905616ms
└─ Errors:    0

posts50k - author.id (extra join) check (no index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      100.838379ms
├─ Worst:     427.747871ms
├─ Completed: 2.531138195s
└─ Errors:    0

posts50k - author.id (extra join) check (with index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      2.218607ms
├─ Worst:     52.891157ms
├─ Completed: 155.077302ms
└─ Errors:    0

posts50k - author.id (extra join) check (with index and skipTotal) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      2.159926ms
├─ Worst:     29.438848ms
├─ Completed: 96.337968ms
└─ Errors:    0

posts50k - loose large text search (no index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      114.897585ms
├─ Worst:     620.663379ms
├─ Completed: 2.801197316s
└─ Errors:    0

posts50k - loose large text search (with index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      152.847102ms
├─ Worst:     636.767078ms
├─ Completed: 2.878411074s
└─ Errors:    0

posts50k - loose large text search (with index and skipTotal) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20&skipTotal=1]

┌─ Best:      1.887806ms
├─ Worst:     62.165388ms
├─ Completed: 121.366927ms
└─ Errors:    0

posts50k - multiple select :each (no index, match-all) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20]

┌─ Best:      3.003310187s
├─ Worst:     3.837676005s
├─ Completed: 34.561274616s
└─ Errors:    0

posts50k - multiple select :each (no index, match-all, skipTotal) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.635411ms
├─ Worst:     199.892827ms
├─ Completed: 303.967273ms
└─ Errors:    0

posts50k - multiple select :each (no index, at-least-one) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20]

┌─ Best:      1.754845565s
├─ Worst:     2.320588778s
├─ Completed: 20.57704077s
└─ Errors:    0

posts50k - multiple select :each (no index, at-least-one, skipTotal) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      1.876006ms
├─ Worst:     128.279331ms
├─ Completed: 211.737638ms
└─ Errors:    0

posts50k - nested single relations lookup (no indexes) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20]

┌─ Best:      3.575087257s
├─ Worst:     4.555269169s
├─ Completed: 41.338618689s
└─ Errors:    0

posts50k - nested single relations lookup (no indexes, skipTotal) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20&skipTotal=1]

┌─ Best:      2.037487ms
├─ Worst:     126.72926ms
├─ Completed: 214.036269ms
└─ Errors:    0

posts50k - nested multiple relations lookup (no indexes, match-all) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20]

┌─ Best:      9.304498521s
├─ Worst:     10.764883317s
├─ Completed: 1m41.433176404s
└─ Errors:    0

posts50k - nested multiple relations lookup (no indexes, match-all, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20&skipTotal=1]

┌─ Best:      19.689869ms
├─ Worst:     210.612305ms
├─ Completed: 575.8806ms
└─ Errors:    0

posts50k - nested multiple relations lookup (no indexes, at-least-one) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20]

┌─ Best:      6.253225866s
├─ Worst:     25.759384356s
├─ Completed: 1m56.504369377s
└─ Errors:    0

posts50k - nested multiple relations lookup (no indexes, at-least-one, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20&skipTotal=1]

┌─ Best:      3.460933ms
├─ Worst:     124.349946ms
├─ Completed: 278.205202ms
└─ Errors:    0

posts100k - simpleA (many requests, no rules, no concurrency) [reqs:1000, conc:1, rule:"", query:?perPage=20]

┌─ Best:      10.772241ms
├─ Worst:     35.470173ms
├─ Completed: 15.032502161s
└─ Errors:    0

posts100k - simpleB (many requests, no rules, high concurrency) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      254.777963ms
├─ Worst:     6.565205106s
├─ Completed: 6.581438008s
└─ Errors:    0

posts100k - simpleC (many requests, no rules, high concurrency, skipTotal) [reqs:1000, conc:1000, rule:"", query:?perPage=20&skipTotal=1]

┌─ Best:      149.130526ms
├─ Worst:     1.04234583s
├─ Completed: 1.05032082s
└─ Errors:    0

posts100k - mixed read and write (simpleA list with additional 300 concurrent random posts100k updates running in the background) [reqs:1000, conc:1000, rule:"", query:?perPage=20]

┌─ Best:      147.051838ms
├─ Worst:     7.419866428s
├─ Completed: 7.442502115s
└─ Errors:    0

posts100k - expand author [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author]

┌─ Best:      27.062383ms
├─ Worst:     134.06971ms
├─ Completed: 700.858028ms
└─ Errors:    0

posts100k - expand author (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author&fields=id,collectionId,expand.author.id]

┌─ Best:      25.424177ms
├─ Worst:     191.940292ms
├─ Completed: 769.412852ms
└─ Errors:    0

posts100k - expand author.permissions [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions]

┌─ Best:      18.37923ms
├─ Worst:     160.471412ms
├─ Completed: 793.026706ms
└─ Errors:    0

posts100k - expand author.permissions (limited fields) [reqs:100, conc:10, rule:"", query:?perPage=20&expand=author.permissions&fields=id,collectionId,expand.author.id,expand.author.expand.permissions.id]

┌─ Best:      24.109372ms
├─ Worst:     249.622833ms
├─ Completed: 871.416768ms
└─ Errors:    0

posts100k - simple auth rule [reqs:100, conc:10, rule:"@request.auth.id != ''", query:?perPage=20]

┌─ Best:      16.582103ms
├─ Worst:     138.983131ms
├─ Completed: 624.696668ms
└─ Errors:    0

posts100k - author check (no index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      283.578406ms
├─ Worst:     1.046815092s
├─ Completed: 5.176633508s
└─ Errors:    0

posts100k - author check (with index) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20]

┌─ Best:      3.370453ms
├─ Worst:     46.89154ms
├─ Completed: 158.089446ms
└─ Errors:    0

posts100k - author check (with index and skipTotal) [reqs:100, conc:10, rule:"author = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      1.559846ms
├─ Worst:     58.795785ms
├─ Completed: 119.607179ms
└─ Errors:    0

posts100k - author.id (extra join) check (no index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      276.844745ms
├─ Worst:     967.387641ms
├─ Completed: 4.849026292s
└─ Errors:    0

posts100k - author.id (extra join) check (with index) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20]

┌─ Best:      4.438537ms
├─ Worst:     41.014238ms
├─ Completed: 152.568468ms
└─ Errors:    0

posts100k - author.id (extra join) check (with index and skipTotal) [reqs:100, conc:10, rule:"author.id = @request.auth.id", query:?perPage=20&skipTotal=1]

┌─ Best:      1.627926ms
├─ Worst:     27.255625ms
├─ Completed: 98.68798ms
└─ Errors:    0

posts100k - loose large text search (no index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      302.238609ms
├─ Worst:     1.358730205s
├─ Completed: 6.12775635s
└─ Errors:    0

posts100k - loose large text search (with index) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20]

┌─ Best:      274.286223ms
├─ Worst:     1.201050651s
├─ Completed: 5.668637404s
└─ Errors:    0

posts100k - loose large text search (with index and skipTotal) [reqs:100, conc:10, rule:"description ~ 'ipsum dolor'", query:?perPage=20&skipTotal=1]

┌─ Best:      1.691967ms
├─ Worst:     38.336789ms
├─ Completed: 107.053016ms
└─ Errors:    0

posts100k - multiple select :each (no index, match-all) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20]

┌─ Best:      8.791549842s
├─ Worst:     10.295851508s
├─ Completed: 1m36.750108405s
└─ Errors:    0

posts100k - multiple select :each (no index, match-all, skipTotal) [reqs:100, conc:10, rule:"type:each != 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      2.332809ms
├─ Worst:     52.179408ms
├─ Completed: 137.80819ms
└─ Errors:    0

posts100k - multiple select :each (no index, at-least-one) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20]

┌─ Best:      5.411323388s
├─ Worst:     6.569046615s
├─ Completed: 1m1.117875875s
└─ Errors:    0

posts100k - multiple select :each (no index, at-least-one, skipTotal) [reqs:100, conc:10, rule:"type:each ?!= 'c'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.312974ms
├─ Worst:     33.814377ms
├─ Completed: 118.724402ms
└─ Errors:    0

posts100k - nested single relations lookup (no indexes) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20]

┌─ Best:      7.795421072s
├─ Worst:     9.317466088s
├─ Completed: 1m24.533439369s
└─ Errors:    0

posts100k - nested single relations lookup (no indexes, skipTotal) [reqs:100, conc:10, rule:"author.organization.name != 'test'", query:?perPage=20&skipTotal=1]

┌─ Best:      3.511855ms
├─ Worst:     194.804005ms
├─ Completed: 271.650803ms
└─ Errors:    0

posts100k - nested multiple relations lookup (no indexes, match-all) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20]

┌─ Best:      19.887570273s
├─ Worst:     22.422892967s
├─ Completed: 3m32.565766193s
└─ Errors:    0

posts100k - nested multiple relations lookup (no indexes, match-all, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active = true", query:?perPage=20&skipTotal=1]

┌─ Best:      18.314318ms
├─ Worst:     271.522959ms
├─ Completed: 610.932648ms
└─ Errors:    0

posts100k - nested multiple relations lookup (no indexes, at-least-one) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20]

┌─ Best:      11.843080342s
├─ Worst:     46.454829967s
├─ Completed: 3m57.383181001s
└─ Errors:    0

posts100k - nested multiple relations lookup (no indexes, at-least-one, skipTotal) [reqs:100, conc:10, rule:"author.permissions.active ?= true", query:?perPage=20&skipTotal=1]

┌─ Best:      3.812966ms
├─ Worst:     132.840675ms
├─ Completed: 273.109241ms
└─ Errors:    0

Go vs JS route execution

JS route (high concurrency) [reqs:500, conc:500]

┌─ Best:      1.74282927s
├─ Worst:     11.940595946s
├─ Completed: 11.95018324s
└─ Errors:    0

Go route (high concurrency) [reqs:500, conc:500]

┌─ Best:      558.85007ms
├─ Worst:     9.833787813s
├─ Completed: 9.842452866s
└─ Errors:    0

JS route (medium concurrency) [reqs:500, conc:50]

┌─ Best:      419.250336ms
├─ Worst:     1.426878469s
├─ Completed: 9.643852162s
└─ Errors:    0

Go route (medium concurrency) [reqs:500, conc:50]

┌─ Best:      610.322291ms
├─ Worst:     1.373593981s
├─ Completed: 10.282909854s
└─ Errors:    0

JS route (no concurrency) [reqs:500, conc:1]

┌─ Best:      22.52152ms
├─ Worst:     49.771248ms
├─ Completed: 15.912073199s
└─ Errors:    0

Go route (no concurrency) [reqs:500, conc:1]

┌─ Best:      22.310481ms
├─ Worst:     48.407568ms
├─ Completed: 15.787087124s
└─ Errors:    0

Go vs JS hooks execution

JS OnRecordBeforeUpdateRequest hook handler - [reqs:100, conc:10]

┌─ Best:      1.543723ms
├─ Worst:     63.00172ms
├─ Completed: 127.254642ms
└─ Errors:    0

Go OnRecordBeforeUpdateRequest hook handler - [reqs:100, conc:10]

┌─ Best:      2.158124ms
├─ Worst:     31.36262ms
├─ Completed: 93.739179ms
└─ Errors:    0

Deleting records

deleting 100 posts10k - simple (no cascade, no rule) [conc:10, rule:""]

┌─ Best:      4.283809ms
├─ Worst:     70.609136ms
├─ Completed: 206.828917ms
└─ Errors:    0

deleting 100 posts10k - simple (no cascade, with rule) [conc:10, rule:"@request.auth.id != ''"]

┌─ Best:      3.290807ms
├─ Worst:     77.160309ms
├─ Completed: 209.362844ms
└─ Errors:    0

deleting 100 posts25k - simple (no cascade, no rule) [conc:10, rule:""]

┌─ Best:      3.320686ms
├─ Worst:     44.291886ms
├─ Completed: 176.531622ms
└─ Errors:    0

deleting 100 posts25k - simple (no cascade, with rule) [conc:10, rule:"@request.auth.id != ''"]

┌─ Best:      3.152326ms
├─ Worst:     48.425734ms
├─ Completed: 177.325185ms
└─ Errors:    0

deleting 100 posts50k - simple (no cascade, no rule) [conc:10, rule:""]

┌─ Best:      4.334688ms
├─ Worst:     49.863937ms
├─ Completed: 180.476433ms
└─ Errors:    0

deleting 100 posts50k - simple (no cascade, with rule) [conc:10, rule:"@request.auth.id != ''"]

┌─ Best:      4.070848ms
├─ Worst:     50.392419ms
├─ Completed: 184.606163ms
└─ Errors:    0

deleting 100 posts100k - simple (no cascade, no rule) [conc:10, rule:""]

┌─ Best:      3.600727ms
├─ Worst:     51.182341ms
├─ Completed: 203.786162ms
└─ Errors:    0

deleting 100 posts100k - simple (no cascade, with rule) [conc:10, rule:"@request.auth.id != ''"]

┌─ Best:      3.241007ms
├─ Worst:     45.868932ms
├─ Completed: 193.704504ms
└─ Errors:    0

deleting 100 users - with cascade deleting all associated posts [conc:10, rule:""]

┌─ Best:      886.360049ms
├─ Worst:     38.402099919s
├─ Completed: 1m27.391482443s
└─ Errors:    0

deleting 100 organizations - with cascade deleting all users and associated posts [conc:10, rule:""]

┌─ Best:      2.629933861s
├─ Worst:     3m13.800058396s
├─ Completed: 5m27.449432646s
└─ Errors:    0