Skip to content

Latest commit

 

History

History
1071 lines (1061 loc) · 36.8 KB

hetzner_cax11_cgo.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:      820.808µs
├─ Worst:     7.351426ms
├─ Completed: 18.629728ms
└─ Errors:    0

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

┌─ Best:      1.737656ms
├─ Worst:     11.505863ms
├─ Completed: 30.804678ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      871.528µs
├─ Worst:     3.807355ms
├─ Completed: 11.15278ms
└─ Errors:    0

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

┌─ Best:      1.173611ms
├─ Worst:     3.813034ms
├─ Completed: 11.809787ms
└─ Errors:    0

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

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

┌─ Best:      1.993149232s
├─ Worst:     4.446744695s
├─ Completed: 17.344468703s
└─ Errors:    0

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

┌─ Best:      1.836800515s
├─ Worst:     4.467286024s
├─ Completed: 17.433788258s
└─ Errors:    0

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

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

┌─ Best:      79.100547ms
├─ Worst:     460.375796ms
├─ Completed: 2.487545437s
└─ Errors:    0

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

┌─ Best:      103.760126ms
├─ Worst:     572.407312ms
├─ Completed: 3.226949856s
└─ Errors:    0

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

┌─ Best:      46.534935ms
├─ Worst:     557.159009ms
├─ Completed: 5.760481328s
└─ Errors:    0

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

┌─ Best:      48.133989ms
├─ Worst:     730.374457ms
├─ Completed: 8.236724109s
└─ Errors:    0

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

┌─ Best:      46.498812ms
├─ Worst:     527.55136ms
├─ Completed: 11.149944397s
└─ Errors:    0

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

┌─ Best:      53.10599ms
├─ Worst:     831.770638ms
├─ Completed: 15.862947198s
└─ Errors:    0

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

┌─ Best:      7.471506ms
├─ Worst:     646.032409ms
├─ Completed: 21.758261827s
└─ Errors:    0

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

┌─ Best:      20.359818ms
├─ Worst:     944.815449ms
├─ Completed: 32.535684174s
└─ 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:      6.967114874s
├─ Worst:     8.615209094s
├─ Completed: 8.631192793s
└─ Errors:    0

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

┌─ Best:      154.072141ms
├─ Worst:     543.554413ms
├─ Completed: 8.713526291s
└─ Errors:    0

User auth refresh

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

┌─ Best:      171.694575ms
├─ Worst:     356.602104ms
├─ Completed: 370.517985ms
└─ Errors:    0

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

┌─ Best:      5.193885ms
├─ Worst:     76.96863ms
├─ Completed: 317.552043ms
└─ Errors:    0

List records

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

┌─ Best:      150.402108ms
├─ Worst:     393.382301ms
├─ Completed: 416.889346ms
└─ Errors:    0

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

┌─ Best:      4.037075ms
├─ Worst:     86.515192ms
├─ Completed: 342.75302ms
└─ Errors:    0

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

┌─ Best:      1.424933ms
├─ Worst:     7.520306ms
├─ Completed: 2.232377676s
└─ Errors:    0

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

┌─ Best:      348.87231ms
├─ Worst:     1.055511805s
├─ Completed: 1.091492798s
└─ Errors:    0

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

┌─ Best:      184.777324ms
├─ Worst:     793.88969ms
├─ Completed: 803.296972ms
└─ 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:      235.071919ms
├─ Worst:     1.27263712s
├─ Completed: 1.287400728s
└─ Errors:    0

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

┌─ Best:      3.062746ms
├─ Worst:     42.993612ms
├─ Completed: 180.375564ms
└─ 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.989003ms
├─ Worst:     44.129983ms
├─ Completed: 221.288118ms
└─ Errors:    0

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

┌─ Best:      5.029204ms
├─ Worst:     58.424387ms
├─ Completed: 267.031513ms
└─ 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:      5.306606ms
├─ Worst:     64.282117ms
├─ Completed: 337.799125ms
└─ Errors:    0

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

┌─ Best:      2.077418ms
├─ Worst:     24.676253ms
├─ Completed: 110.185394ms
└─ Errors:    0

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

┌─ Best:      5.929291ms
├─ Worst:     293.405179ms
├─ Completed: 483.415264ms
└─ Errors:    0

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

┌─ Best:      2.370781ms
├─ Worst:     18.959084ms
├─ Completed: 91.27039ms
└─ 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.920777ms
├─ Worst:     22.334513ms
├─ Completed: 90.294661ms
└─ Errors:    0

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

┌─ Best:      3.896954ms
├─ Worst:     56.238527ms
├─ Completed: 225.50575ms
└─ 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.314451ms
├─ Worst:     20.82698ms
├─ Completed: 91.277509ms
└─ 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.602973ms
├─ Worst:     20.915101ms
├─ Completed: 81.260262ms
└─ Errors:    0

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

┌─ Best:      4.049555ms
├─ Worst:     52.886496ms
├─ Completed: 240.466277ms
└─ Errors:    0

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

┌─ Best:      4.513359ms
├─ Worst:     76.672702ms
├─ Completed: 256.618375ms
└─ 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.750944ms
├─ Worst:     16.691944ms
├─ Completed: 84.504529ms
└─ Errors:    0

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

┌─ Best:      60.868605ms
├─ Worst:     264.657563ms
├─ Completed: 1.418028832s
└─ 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.564831ms
├─ Worst:     25.746982ms
├─ Completed: 101.981199ms
└─ Errors:    0

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

┌─ Best:      46.039277ms
├─ Worst:     240.115749ms
├─ Completed: 1.060848623s
└─ 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.537373ms
├─ Worst:     23.764045ms
├─ Completed: 93.97749ms
└─ Errors:    0

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

┌─ Best:      20.095733ms
├─ Worst:     207.370226ms
├─ Completed: 1.06142646s
└─ 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:      1.378932ms
├─ Worst:     32.841403ms
├─ Completed: 90.68574ms
└─ Errors:    0

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

┌─ Best:      481.289378ms
├─ Worst:     783.620943ms
├─ Completed: 6.218671489s
└─ 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:      4.864481ms
├─ Worst:     70.708888ms
├─ Completed: 217.760352ms
└─ 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:      715.404019ms
├─ Worst:     943.279064ms
├─ Completed: 8.364860385s
└─ 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.651232ms
├─ Worst:     28.142481ms
├─ Completed: 108.43901ms
└─ Errors:    0

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

┌─ Best:      2.24286ms
├─ Worst:     7.06958ms
├─ Completed: 3.493816475s
└─ Errors:    0

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

┌─ Best:      297.364668ms
├─ Worst:     1.44136031s
├─ Completed: 1.463174177s
└─ Errors:    0

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

┌─ Best:      220.245686ms
├─ Worst:     760.644555ms
├─ Completed: 777.094176ms
└─ 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:      334.831626ms
├─ Worst:     1.673492925s
├─ Completed: 1.722316183s
└─ Errors:    0

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

┌─ Best:      3.731792ms
├─ Worst:     38.474929ms
├─ Completed: 197.110967ms
└─ Errors:    0

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

┌─ Best:      8.715075ms
├─ Worst:     47.441286ms
├─ Completed: 249.865578ms
└─ Errors:    0

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

┌─ Best:      10.165887ms
├─ Worst:     67.201895ms
├─ Completed: 296.476615ms
└─ 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:      7.0251ms
├─ Worst:     69.588755ms
├─ Completed: 384.831209ms
└─ Errors:    0

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

┌─ Best:      2.542862ms
├─ Worst:     32.886361ms
├─ Completed: 143.94859ms
└─ Errors:    0

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

┌─ Best:      18.479958ms
├─ Worst:     314.941891ms
├─ Completed: 990.795304ms
└─ Errors:    0

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

┌─ Best:      1.735175ms
├─ Worst:     46.520237ms
├─ Completed: 118.374571ms
└─ 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.179818ms
├─ Worst:     21.16458ms
├─ Completed: 88.521596ms
└─ Errors:    0

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

┌─ Best:      14.828327ms
├─ Worst:     265.482786ms
├─ Completed: 823.935751ms
└─ Errors:    0

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

┌─ Best:      1.617894ms
├─ Worst:     45.406787ms
├─ Completed: 114.793939ms
└─ 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.573174ms
├─ Worst:     24.757291ms
├─ Completed: 93.253235ms
└─ Errors:    0

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

┌─ Best:      26.762588ms
├─ Worst:     232.890745ms
├─ Completed: 861.332184ms
└─ Errors:    0

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

┌─ Best:      35.939346ms
├─ Worst:     179.419009ms
├─ Completed: 851.439896ms
└─ 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.37078ms
├─ Worst:     19.688368ms
├─ Completed: 88.952118ms
└─ Errors:    0

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

┌─ Best:      198.858733ms
├─ Worst:     614.647954ms
├─ Completed: 4.037437376s
└─ 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.51335ms
├─ Worst:     24.604489ms
├─ Completed: 97.766232ms
└─ Errors:    0

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

┌─ Best:      110.087336ms
├─ Worst:     458.45322ms
├─ Completed: 2.833727904s
└─ 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.974585ms
├─ Worst:     21.874146ms
├─ Completed: 91.215455ms
└─ Errors:    0

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

┌─ Best:      146.162281ms
├─ Worst:     485.498846ms
├─ Completed: 3.177623683s
└─ 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:      1.502053ms
├─ Worst:     23.141756ms
├─ Completed: 90.842211ms
└─ Errors:    0

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

┌─ Best:      1.361086455s
├─ Worst:     1.800552768s
├─ Completed: 16.1050383s
└─ 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:      3.223227ms
├─ Worst:     52.675846ms
├─ Completed: 182.486266ms
└─ 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:      1.970429489s
├─ Worst:     2.315826333s
├─ Completed: 21.604390955s
└─ 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:      1.961616ms
├─ Worst:     38.126402ms
├─ Completed: 119.977293ms
└─ Errors:    0

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

┌─ Best:      3.332028ms
├─ Worst:     10.942972ms
├─ Completed: 4.881132285s
└─ Errors:    0

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

┌─ Best:      226.129508ms
├─ Worst:     1.937228903s
├─ Completed: 1.955596619s
└─ Errors:    0

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

┌─ Best:      330.245186ms
├─ Worst:     788.835092ms
├─ Completed: 800.776353ms
└─ 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:      386.897902ms
├─ Worst:     2.187597081s
├─ Completed: 2.206063636s
└─ Errors:    0

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

┌─ Best:      7.483783ms
├─ Worst:     56.339954ms
├─ Completed: 276.878693ms
└─ Errors:    0

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

┌─ Best:      10.838332ms
├─ Worst:     68.317055ms
├─ Completed: 315.046254ms
└─ Errors:    0

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

┌─ Best:      8.531632ms
├─ Worst:     71.892725ms
├─ Completed: 359.409867ms
└─ 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:      7.518423ms
├─ Worst:     75.99624ms
├─ Completed: 425.658744ms
└─ Errors:    0

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

┌─ Best:      3.707591ms
├─ Worst:     43.609167ms
├─ Completed: 196.348053ms
└─ Errors:    0

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

┌─ Best:      33.791404ms
├─ Worst:     240.720186ms
├─ Completed: 1.393887609s
└─ Errors:    0

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

┌─ Best:      1.778895ms
├─ Worst:     43.537046ms
├─ Completed: 119.256563ms
└─ Errors:    0

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

┌─ Best:      1.672934ms
├─ Worst:     29.230726ms
├─ Completed: 87.900339ms
└─ Errors:    0

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

┌─ Best:      62.393284ms
├─ Worst:     254.959144ms
├─ Completed: 1.361509728s
└─ Errors:    0

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

┌─ Best:      1.887056ms
├─ Worst:     58.319291ms
├─ Completed: 129.111165ms
└─ 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.878376ms
├─ Worst:     24.245803ms
├─ Completed: 82.815616ms
└─ Errors:    0

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

┌─ Best:      47.512199ms
├─ Worst:     276.579323ms
├─ Completed: 1.503206868s
└─ Errors:    0

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

┌─ Best:      83.243539ms
├─ Worst:     234.777371ms
├─ Completed: 1.514552877s
└─ 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.422172ms
├─ Worst:     34.811972ms
├─ Completed: 95.497722ms
└─ Errors:    0

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

┌─ Best:      839.817961ms
├─ Worst:     1.190707872s
├─ Completed: 10.290196914s
└─ 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:      1.636573ms
├─ Worst:     23.566438ms
├─ Completed: 92.567576ms
└─ Errors:    0

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

┌─ Best:      637.445138ms
├─ Worst:     910.157947ms
├─ Completed: 7.916660434s
└─ 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.568013ms
├─ Worst:     29.542927ms
├─ Completed: 91.074602ms
└─ Errors:    0

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

┌─ Best:      737.046766ms
├─ Worst:     986.088253ms
├─ Completed: 8.608148736s
└─ 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.649134ms
├─ Worst:     28.957682ms
├─ Completed: 90.449556ms
└─ Errors:    0

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

┌─ Best:      3.226588926s
├─ Worst:     3.581945897s
├─ Completed: 34.819191691s
└─ 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:      3.176586ms
├─ Worst:     37.396111ms
├─ Completed: 180.140741ms
└─ 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:      4.493345998s
├─ Worst:     4.810658256s
├─ Completed: 46.595701948s
└─ 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.61131ms
├─ Worst:     31.507502ms
├─ Completed: 115.608999ms
└─ Errors:    0

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

┌─ Best:      5.716087ms
├─ Worst:     15.929812ms
├─ Completed: 7.359654246s
└─ Errors:    0

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

┌─ Best:      333.346162ms
├─ Worst:     3.103054386s
├─ Completed: 3.125618374s
└─ Errors:    0

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

┌─ Best:      221.133511ms
├─ Worst:     803.596255ms
├─ Completed: 808.091653ms
└─ 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:      628.469204ms
├─ Worst:     3.886200493s
├─ Completed: 3.897698588s
└─ Errors:    0

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

┌─ Best:      13.27791ms
├─ Worst:     64.959298ms
├─ Completed: 369.85078ms
└─ Errors:    0

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

┌─ Best:      8.387709ms
├─ Worst:     97.88681ms
├─ Completed: 428.902589ms
└─ Errors:    0

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

┌─ Best:      14.56264ms
├─ Worst:     95.456429ms
├─ Completed: 475.775495ms
└─ 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:      16.699938ms
├─ Worst:     100.667753ms
├─ Completed: 554.520947ms
└─ Errors:    0

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

┌─ Best:      12.878722ms
├─ Worst:     64.993421ms
├─ Completed: 331.055099ms
└─ Errors:    0

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

┌─ Best:      151.84872ms
├─ Worst:     461.807778ms
├─ Completed: 2.638874172s
└─ Errors:    0

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

┌─ Best:      1.893276ms
├─ Worst:     49.199878ms
├─ Completed: 136.13962ms
└─ 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.486628ms
├─ Worst:     18.717789ms
├─ Completed: 82.19853ms
└─ Errors:    0

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

┌─ Best:      78.826664ms
├─ Worst:     426.545362ms
├─ Completed: 2.459494031s
└─ Errors:    0

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

┌─ Best:      1.779033ms
├─ Worst:     21.335755ms
├─ Completed: 101.962885ms
└─ 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.461307ms
├─ Worst:     35.297451ms
├─ Completed: 97.688963ms
└─ Errors:    0

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

┌─ Best:      109.949665ms
├─ Worst:     395.664201ms
├─ Completed: 2.876657999s
└─ Errors:    0

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

┌─ Best:      196.067942ms
├─ Worst:     329.91612ms
├─ Completed: 2.825713757s
└─ 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.68575ms
├─ Worst:     21.259468ms
├─ Completed: 83.071714ms
└─ Errors:    0

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

┌─ Best:      2.03090832s
├─ Worst:     2.489947134s
├─ Completed: 23.213848792s
└─ 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:      3.332979ms
├─ Worst:     27.123762ms
├─ Completed: 104.671418ms
└─ Errors:    0

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

┌─ Best:      1.684027859s
├─ Worst:     1.972574299s
├─ Completed: 18.247325379s
└─ 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.685646ms
├─ Worst:     26.799306ms
├─ Completed: 93.030256ms
└─ Errors:    0

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

┌─ Best:      1.773141371s
├─ Worst:     2.226810376s
├─ Completed: 20.134592463s
└─ 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:      1.568307ms
├─ Worst:     24.278413ms
├─ Completed: 94.74805ms
└─ Errors:    0

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

┌─ Best:      6.671712392s
├─ Worst:     7.450979662s
├─ Completed: 1m12.473665569s
└─ 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:      7.949686ms
├─ Worst:     65.977689ms
├─ Completed: 233.239908ms
└─ 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:      9.218462358s
├─ Worst:     9.755332562s
├─ Completed: 1m35.251665974s
└─ 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:      2.449116ms
├─ Worst:     35.661084ms
├─ Completed: 118.413301ms
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      1.167782818s
├─ Worst:     7.745542396s
├─ Completed: 7.758137941s
└─ Errors:    0

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

┌─ Best:      261.987018ms
├─ Worst:     7.227080114s
├─ Completed: 7.229367148s
└─ Errors:    0

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

┌─ Best:      241.660121ms
├─ Worst:     1.273982359s
├─ Completed: 7.426153966s
└─ Errors:    0

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

┌─ Best:      118.728388ms
├─ Worst:     1.371885493s
├─ Completed: 6.82956115s
└─ Errors:    0

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

┌─ Best:      13.806358ms
├─ Worst:     30.482835ms
├─ Completed: 7.772945239s
└─ Errors:    0

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

┌─ Best:      13.558631ms
├─ Worst:     58.478946ms
├─ Completed: 7.717181341s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      1.822146ms
├─ Worst:     16.474153ms
├─ Completed: 74.095124ms
└─ Errors:    0

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

┌─ Best:      1.39706ms
├─ Worst:     18.660143ms
├─ Completed: 72.917027ms
└─ Errors:    0

Deleting records

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

┌─ Best:      1.200337ms
├─ Worst:     12.993822ms
├─ Completed: 62.508599ms
└─ Errors:    0

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

┌─ Best:      1.003694ms
├─ Worst:     24.90427ms
├─ Completed: 64.599187ms
└─ Errors:    0

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

┌─ Best:      1.46918ms
├─ Worst:     9.120128ms
├─ Completed: 47.166381ms
└─ Errors:    0

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

┌─ Best:      1.314538ms
├─ Worst:     8.751482ms
├─ Completed: 46.42477ms
└─ Errors:    0

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

┌─ Best:      1.239737ms
├─ Worst:     7.369143ms
├─ Completed: 45.722399ms
└─ Errors:    0

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

┌─ Best:      1.309979ms
├─ Worst:     19.201788ms
├─ Completed: 70.88239ms
└─ Errors:    0

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

┌─ Best:      803.851µs
├─ Worst:     43.156802ms
├─ Completed: 83.121279ms
└─ Errors:    0

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

┌─ Best:      1.44486ms
├─ Worst:     13.112343ms
├─ Completed: 48.640357ms
└─ Errors:    0

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

┌─ Best:      116.743224ms
├─ Worst:     6.50439487s
├─ Completed: 13.555612379s
└─ Errors:    0

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

┌─ Best:      310.676546ms
├─ Worst:     16.979496613s
├─ Completed: 36.384435247s
└─ Errors:    0