Skip to content

Latest commit

 

History

History
1071 lines (1061 loc) · 36.8 KB

hetzner_cax11.md

File metadata and controls

1071 lines (1061 loc) · 36.8 KB

PocketBase v0.24.0-dev

Creating organizations (100)

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

┌─ Best:      1.440214ms
├─ Worst:     6.334702ms
├─ Completed: 18.611703ms
└─ Errors:    0

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

┌─ Best:      1.371854ms
├─ Worst:     9.704054ms
├─ Completed: 23.872832ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      862.008µs
├─ Worst:     3.905877ms
├─ Completed: 11.550031ms
└─ Errors:    0

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

┌─ Best:      1.396813ms
├─ Worst:     4.612884ms
├─ Completed: 14.005532ms
└─ Errors:    0

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

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

┌─ Best:      1.780211397s
├─ Worst:     4.424724036s
├─ Completed: 17.449363329s
└─ Errors:    0

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

┌─ Best:      2.01968548s
├─ Worst:     4.427031425s
├─ Completed: 17.431510413s
└─ Errors:    0

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

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

┌─ Best:      2.845501ms
├─ Worst:     1.602560092s
├─ Completed: 2.532474354s
└─ Errors:    0

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

┌─ Best:      4.05427ms
├─ Worst:     2.539661564s
├─ Completed: 3.637887707s
└─ Errors:    0

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

┌─ Best:      4.22315ms
├─ Worst:     2.027745068s
├─ Completed: 6.392444916s
└─ Errors:    0

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

┌─ Best:      3.104261ms
├─ Worst:     2.716535462s
├─ Completed: 9.343380132s
└─ Errors:    0

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

┌─ Best:      4.313909ms
├─ Worst:     2.066710575s
├─ Completed: 12.390605414s
└─ Errors:    0

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

┌─ Best:      4.119226ms
├─ Worst:     3.309687722s
├─ Completed: 18.705961356s
└─ Errors:    0

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

┌─ Best:      4.003424ms
├─ Worst:     2.334491025s
├─ Completed: 25.259263001s
└─ Errors:    0

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

┌─ Best:      3.187624ms
├─ Worst:     3.782952627s
├─ Completed: 37.692735848s
└─ 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.776812505s
├─ Worst:     8.69509159s
├─ Completed: 8.696172478s
└─ Errors:    0

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

┌─ Best:      177.421796ms
├─ Worst:     503.903433ms
├─ Completed: 8.715224961s
└─ Errors:    0

User auth refresh

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

┌─ Best:      154.342105ms
├─ Worst:     369.602045ms
├─ Completed: 373.844156ms
└─ Errors:    0

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

┌─ Best:      1.914334ms
├─ Worst:     72.484437ms
├─ Completed: 344.200935ms
└─ Errors:    0

List records

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

┌─ Best:      97.711735ms
├─ Worst:     484.19564ms
├─ Completed: 492.54874ms
└─ Errors:    0

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

┌─ Best:      2.80018ms
├─ Worst:     82.415863ms
├─ Completed: 394.405512ms
└─ Errors:    0

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

┌─ Best:      2.200495ms
├─ Worst:     7.02797ms
├─ Completed: 3.264219368s
└─ Errors:    0

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

┌─ Best:      183.444523ms
├─ Worst:     1.476829643s
├─ Completed: 1.482495043s
└─ Errors:    0

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

┌─ Best:      278.144857ms
├─ Worst:     863.299567ms
├─ Completed: 876.861981ms
└─ 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:      282.750121ms
├─ Worst:     1.840928267s
├─ Completed: 1.864876152s
└─ Errors:    0

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

┌─ Best:      8.74426ms
├─ Worst:     45.375233ms
├─ Completed: 242.776154ms
└─ Errors:    0

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

┌─ Best:      4.35115ms
├─ Worst:     55.416741ms
├─ Completed: 263.963653ms
└─ Errors:    0

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

┌─ Best:      7.38793ms
├─ Worst:     66.676336ms
├─ Completed: 325.655391ms
└─ 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:      8.397417ms
├─ Worst:     97.594667ms
├─ Completed: 396.366546ms
└─ Errors:    0

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

┌─ Best:      2.819619ms
├─ Worst:     26.008657ms
├─ Completed: 143.129334ms
└─ Errors:    0

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

┌─ Best:      31.685335ms
├─ Worst:     253.779843ms
├─ Completed: 723.944873ms
└─ Errors:    0

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

┌─ Best:      2.468617ms
├─ Worst:     34.975317ms
├─ Completed: 121.22154ms
└─ Errors:    0

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

┌─ Best:      2.111094ms
├─ Worst:     29.155516ms
├─ Completed: 95.129121ms
└─ 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.483678ms
├─ Worst:     258.469139ms
├─ Completed: 714.676006ms
└─ 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.916173ms
├─ Worst:     35.646999ms
├─ Completed: 117.79811ms
└─ 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:      1.727931ms
├─ Worst:     21.845027ms
├─ Completed: 93.413345ms
└─ Errors:    0

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

┌─ Best:      19.38845ms
├─ Worst:     141.341384ms
├─ Completed: 523.942495ms
└─ Errors:    0

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

┌─ Best:      20.053893ms
├─ Worst:     156.484841ms
├─ Completed: 556.37926ms
└─ 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:      2.294055ms
├─ Worst:     36.640083ms
├─ Completed: 110.247971ms
└─ Errors:    0

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

┌─ Best:      395.189921ms
├─ Worst:     614.721062ms
├─ Completed: 5.049768597s
└─ 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:      4.292628ms
├─ Worst:     34.137184ms
├─ Completed: 122.807607ms
└─ Errors:    0

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

┌─ Best:      209.001965ms
├─ Worst:     345.632424ms
├─ Completed: 2.701900675s
└─ 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:      1.894092ms
├─ Worst:     31.958249ms
├─ Completed: 112.233532ms
└─ Errors:    0

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

┌─ Best:      515.473975ms
├─ Worst:     683.416031ms
├─ Completed: 6.147724034s
└─ 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:      2.199134ms
├─ Worst:     28.461023ms
├─ Completed: 113.10041ms
└─ 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.477704296s
├─ Worst:     2.064616821s
├─ Completed: 18.408511236s
└─ 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:      9.551541ms
├─ Worst:     81.798158ms
├─ Completed: 324.169452ms
└─ 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:      951.12104ms
├─ Worst:     3.138370934s
├─ Completed: 21.548569411s
└─ 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:      4.274426ms
├─ Worst:     38.922962ms
├─ Completed: 176.155094ms
└─ Errors:    0

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

┌─ Best:      3.597502ms
├─ Worst:     11.34255ms
├─ Completed: 5.351885469s
└─ Errors:    0

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

┌─ Best:      414.554559ms
├─ Worst:     2.234934832s
├─ Completed: 2.253485627s
└─ Errors:    0

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

┌─ Best:      224.313022ms
├─ Worst:     877.353122ms
├─ Completed: 883.953324ms
└─ 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:      565.124035ms
├─ Worst:     2.695640642s
├─ Completed: 2.70344293s
└─ Errors:    0

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

┌─ Best:      11.980474ms
├─ Worst:     55.413539ms
├─ Completed: 309.119135ms
└─ Errors:    0

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

┌─ Best:      7.622487ms
├─ Worst:     71.899361ms
├─ Completed: 342.043295ms
└─ Errors:    0

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

┌─ Best:      9.151456ms
├─ Worst:     99.265687ms
├─ Completed: 395.478778ms
└─ 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:      16.930784ms
├─ Worst:     80.741493ms
├─ Completed: 476.45527ms
└─ Errors:    0

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

┌─ Best:      8.16257ms
├─ Worst:     39.605722ms
├─ Completed: 231.084409ms
└─ Errors:    0

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

┌─ Best:      45.334316ms
├─ Worst:     402.394332ms
├─ Completed: 1.309870297s
└─ Errors:    0

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

┌─ Best:      1.996132ms
├─ Worst:     74.155931ms
├─ Completed: 148.082781ms
└─ 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.218294ms
├─ Worst:     21.25705ms
├─ Completed: 88.271496ms
└─ Errors:    0

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

┌─ Best:      49.783102ms
├─ Worst:     325.907497ms
├─ Completed: 1.23129503s
└─ 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.502375ms
├─ Worst:     50.650907ms
├─ Completed: 130.188389ms
└─ 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:      1.472049ms
├─ Worst:     27.249245ms
├─ Completed: 96.129302ms
└─ Errors:    0

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

┌─ Best:      38.960195ms
├─ Worst:     197.337833ms
├─ Completed: 1.111295077s
└─ Errors:    0

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

┌─ Best:      44.787671ms
├─ Worst:     218.970162ms
├─ Completed: 1.132318075s
└─ 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:      1.65669ms
├─ Worst:     43.674503ms
├─ Completed: 118.009271ms
└─ Errors:    0

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

┌─ Best:      1.102472362s
├─ Worst:     1.592479467s
├─ Completed: 14.466831466s
└─ 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:      1.79517ms
├─ Worst:     41.80021ms
├─ Completed: 132.483432ms
└─ Errors:    0

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

┌─ Best:      654.827264ms
├─ Worst:     863.3916ms
├─ Completed: 7.81692722s
└─ 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:      1.73221ms
├─ Worst:     128.576086ms
├─ Completed: 210.111971ms
└─ Errors:    0

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

┌─ Best:      1.331179163s
├─ Worst:     2.020484981s
├─ Completed: 16.446753186s
└─ 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.314453ms
├─ Worst:     89.692211ms
├─ Completed: 172.921823ms
└─ Errors:    0

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

┌─ Best:      3.822558597s
├─ Worst:     5.173680411s
├─ Completed: 46.606571739s
└─ 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.271958ms
├─ Worst:     170.528116ms
├─ Completed: 511.215387ms
└─ 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:      2.681489689s
├─ Worst:     7.482515136s
├─ Completed: 54.15917659s
└─ 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:      2.892737ms
├─ Worst:     67.762833ms
├─ Completed: 190.755504ms
└─ Errors:    0

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

┌─ Best:      6.165916ms
├─ Worst:     16.172694ms
├─ Completed: 7.990960662s
└─ Errors:    0

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

┌─ Best:      191.811188ms
├─ Worst:     3.59245164s
├─ Completed: 3.601817775s
└─ Errors:    0

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

┌─ Best:      191.872548ms
├─ Worst:     937.816577ms
├─ Completed: 945.691382ms
└─ 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:      253.255622ms
├─ Worst:     4.137610807s
├─ Completed: 4.152621053s
└─ Errors:    0

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

┌─ Best:      15.890292ms
├─ Worst:     89.283555ms
├─ Completed: 419.079858ms
└─ Errors:    0

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

┌─ Best:      15.732331ms
├─ Worst:     100.169817ms
├─ Completed: 464.873121ms
└─ Errors:    0

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

┌─ Best:      15.832531ms
├─ Worst:     127.517456ms
├─ Completed: 512.929319ms
└─ 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:      19.514152ms
├─ Worst:     137.622034ms
├─ Completed: 586.937064ms
└─ Errors:    0

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

┌─ Best:      11.055144ms
├─ Worst:     72.81154ms
├─ Completed: 344.843468ms
└─ Errors:    0

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

┌─ Best:      128.913023ms
├─ Worst:     472.705524ms
├─ Completed: 2.503527947s
└─ Errors:    0

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

┌─ Best:      3.094618ms
├─ Worst:     44.213335ms
├─ Completed: 141.400535ms
└─ 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.766896ms
├─ Worst:     26.08583ms
├─ Completed: 97.20736ms
└─ Errors:    0

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

┌─ Best:      117.675677ms
├─ Worst:     492.149313ms
├─ Completed: 2.318676711s
└─ 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.408293ms
├─ Worst:     46.778789ms
├─ Completed: 134.895496ms
└─ 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:      1.556209ms
├─ Worst:     26.358191ms
├─ Completed: 90.092199ms
└─ Errors:    0

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

┌─ Best:      123.45495ms
├─ Worst:     590.135875ms
├─ Completed: 2.615206327s
└─ Errors:    0

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

┌─ Best:      114.290578ms
├─ Worst:     560.440623ms
├─ Completed: 2.67761712s
└─ 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:      2.570214ms
├─ Worst:     51.870458ms
├─ Completed: 123.740192ms
└─ Errors:    0

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

┌─ Best:      2.916562731s
├─ Worst:     3.54698492s
├─ Completed: 33.446534377s
└─ 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:      2.357054ms
├─ Worst:     186.738591ms
├─ Completed: 285.727838ms
└─ Errors:    0

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

┌─ Best:      1.721052061s
├─ Worst:     2.164196571s
├─ Completed: 18.75935025s
└─ 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:      2.438453ms
├─ Worst:     129.798623ms
├─ Completed: 212.349816ms
└─ Errors:    0

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

┌─ Best:      3.363403132s
├─ Worst:     3.975843121s
├─ Completed: 36.949941493s
└─ 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:      1.74993ms
├─ Worst:     150.198379ms
├─ Completed: 231.584604ms
└─ 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.207359181s
├─ Worst:     10.684617014s
├─ Completed: 1m38.508747123s
└─ 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:      18.827348ms
├─ Worst:     191.987096ms
├─ Completed: 504.497238ms
└─ 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:      3.66359644s
├─ Worst:     13.593531219s
├─ Completed: 1m52.992315072s
└─ 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:      4.163384ms
├─ Worst:     168.32792ms
├─ Completed: 297.921618ms
└─ Errors:    0

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

┌─ Best:      10.706101ms
├─ Worst:     24.723621ms
├─ Completed: 12.811656172s
└─ Errors:    0

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

┌─ Best:      235.567822ms
├─ Worst:     6.2262624s
├─ Completed: 6.25254743s
└─ Errors:    0

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

┌─ Best:      193.148941ms
├─ Worst:     979.601102ms
├─ Completed: 984.231529ms
└─ 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:      182.131718ms
├─ Worst:     7.538295034s
├─ Completed: 7.5427821s
└─ Errors:    0

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

┌─ Best:      21.372562ms
├─ Worst:     180.357667ms
├─ Completed: 710.504568ms
└─ Errors:    0

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

┌─ Best:      20.740558ms
├─ Worst:     156.057009ms
├─ Completed: 724.215567ms
└─ Errors:    0

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

┌─ Best:      23.038412ms
├─ Worst:     210.4806ms
├─ Completed: 789.384498ms
└─ 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:      26.752112ms
├─ Worst:     167.311514ms
├─ Completed: 863.063038ms
└─ Errors:    0

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

┌─ Best:      16.172333ms
├─ Worst:     120.789328ms
├─ Completed: 615.052945ms
└─ Errors:    0

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

┌─ Best:      246.236003ms
├─ Worst:     879.219009ms
├─ Completed: 4.412021538s
└─ Errors:    0

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

┌─ Best:      5.16155ms
├─ Worst:     46.744107ms
├─ Completed: 137.806625ms
└─ Errors:    0

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

┌─ Best:      2.524494ms
├─ Worst:     29.508088ms
├─ Completed: 100.554212ms
└─ Errors:    0

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

┌─ Best:      213.007133ms
├─ Worst:     842.238238ms
├─ Completed: 4.351408912s
└─ Errors:    0

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

┌─ Best:      3.571581ms
├─ Worst:     44.385893ms
├─ Completed: 144.351982ms
└─ 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.518489ms
├─ Worst:     31.790541ms
├─ Completed: 101.355857ms
└─ Errors:    0

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

┌─ Best:      321.956994ms
├─ Worst:     1.471443224s
├─ Completed: 5.325059058s
└─ Errors:    0

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

┌─ Best:      218.655846ms
├─ Worst:     1.266912738s
├─ Completed: 5.323797129s
└─ 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.559369ms
├─ Worst:     36.520968ms
├─ Completed: 110.794111ms
└─ Errors:    0

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

┌─ Best:      8.625278688s
├─ Worst:     9.761976203s
├─ Completed: 1m32.601891403s
└─ 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.569374ms
├─ Worst:     45.267098ms
├─ Completed: 145.935551ms
└─ Errors:    0

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

┌─ Best:      3.758508527s
├─ Worst:     4.207247763s
├─ Completed: 39.809951982s
└─ 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:      2.362454ms
├─ Worst:     180.335147ms
├─ Completed: 253.179282ms
└─ Errors:    0

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

┌─ Best:      7.001666517s
├─ Worst:     7.882387652s
├─ Completed: 1m15.347205924s
└─ 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:      2.316574ms
├─ Worst:     145.262187ms
├─ Completed: 221.969024ms
└─ 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.789039216s
├─ Worst:     21.595017143s
├─ Completed: 3m25.71032407s
└─ 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:      20.535997ms
├─ Worst:     218.632006ms
├─ Completed: 581.958554ms
└─ 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:      13.691462569s
├─ Worst:     34.904995856s
├─ Completed: 3m54.084377985s
└─ 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:      4.177754ms
├─ Worst:     179.171178ms
├─ Completed: 297.246394ms
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      104.590068ms
├─ Worst:     9.408412768s
├─ Completed: 9.412275668s
└─ Errors:    0

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

┌─ Best:      633.052162ms
├─ Worst:     8.18655254s
├─ Completed: 8.208796064s
└─ Errors:    0

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

┌─ Best:      422.311629ms
├─ Worst:     1.186347874s
├─ Completed: 7.829041882s
└─ Errors:    0

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

┌─ Best:      144.283354ms
├─ Worst:     1.055634529s
├─ Completed: 7.709518804s
└─ Errors:    0

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

┌─ Best:      18.569769ms
├─ Worst:     32.226264ms
├─ Completed: 11.345019664s
└─ Errors:    0

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

┌─ Best:      18.783331ms
├─ Worst:     33.386642ms
├─ Completed: 11.306565048s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      2.728505ms
├─ Worst:     58.573665ms
├─ Completed: 117.656703ms
└─ Errors:    0

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

┌─ Best:      2.627942ms
├─ Worst:     31.82271ms
├─ Completed: 85.745783ms
└─ Errors:    0

Deleting records

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

┌─ Best:      1.309871ms
├─ Worst:     18.420514ms
├─ Completed: 69.828523ms
└─ Errors:    0

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

┌─ Best:      1.499275ms
├─ Worst:     28.57867ms
├─ Completed: 74.319504ms
└─ Errors:    0

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

┌─ Best:      1.500875ms
├─ Worst:     44.871489ms
├─ Completed: 92.491202ms
└─ Errors:    0

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

┌─ Best:      2.049368ms
├─ Worst:     10.811572ms
├─ Completed: 53.343604ms
└─ Errors:    0

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

┌─ Best:      1.448113ms
├─ Worst:     10.438043ms
├─ Completed: 51.768483ms
└─ Errors:    0

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

┌─ Best:      1.608677ms
├─ Worst:     17.780213ms
├─ Completed: 82.201627ms
└─ Errors:    0

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

┌─ Best:      1.125266ms
├─ Worst:     57.306646ms
├─ Completed: 107.968738ms
└─ Errors:    0

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

┌─ Best:      2.273653ms
├─ Worst:     12.114319ms
├─ Completed: 58.95612ms
└─ Errors:    0

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

┌─ Best:      151.115919ms
├─ Worst:     4.983009505s
├─ Completed: 15.150782848s
└─ Errors:    0

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

┌─ Best:      208.840308ms
├─ Worst:     19.409674844s
├─ Completed: 40.092833917s
└─ Errors:    0