Skip to content

Latest commit

 

History

History
1071 lines (1061 loc) · 36.7 KB

hetzner_cax41_cgo.md

File metadata and controls

1071 lines (1061 loc) · 36.7 KB

PocketBase v0.24.0-dev

Creating organizations (100)

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

┌─ Best:      609.725µs
├─ Worst:     4.406199ms
├─ Completed: 11.215061ms
└─ Errors:    0

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

┌─ Best:      693.607µs
├─ Worst:     10.888858ms
├─ Completed: 11.964628ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      616.926µs
├─ Worst:     2.455663ms
├─ Completed: 7.273506ms
└─ Errors:    0

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

┌─ Best:      853.327µs
├─ Worst:     3.36107ms
├─ Completed: 9.804889ms
└─ Errors:    0

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

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

┌─ Best:      203.054647ms
├─ Worst:     863.775856ms
├─ Completed: 2.240622795s
└─ Errors:    0

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

┌─ Best:      256.660912ms
├─ Worst:     916.792981ms
├─ Completed: 2.202993436s
└─ Errors:    0

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

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

┌─ Best:      1.10941ms
├─ Worst:     986.020982ms
├─ Completed: 1.243724672s
└─ Errors:    0

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

┌─ Best:      1.403173ms
├─ Worst:     1.023067843s
├─ Completed: 1.383130364s
└─ Errors:    0

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

┌─ Best:      862.248µs
├─ Worst:     1.143153072s
├─ Completed: 3.039118708s
└─ Errors:    0

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

┌─ Best:      1.340933ms
├─ Worst:     1.158862861s
├─ Completed: 3.205265869s
└─ Errors:    0

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

┌─ Best:      927.528µs
├─ Worst:     1.26116924s
├─ Completed: 6.114998219s
└─ Errors:    0

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

┌─ Best:      1.267172ms
├─ Worst:     1.559939474s
├─ Completed: 6.574618884s
└─ Errors:    0

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

┌─ Best:      945.289µs
├─ Worst:     1.433714274s
├─ Completed: 12.589717179s
└─ Errors:    0

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

┌─ Best:      1.223692ms
├─ Worst:     1.37474585s
├─ Completed: 13.580098262s
└─ 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:      168.43494ms
├─ Worst:     1.096741974s
├─ Completed: 1.110199866s
└─ Errors:    0

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

┌─ Best:      68.517478ms
├─ Worst:     93.714007ms
├─ Completed: 1.787370402s
└─ Errors:    0

User auth refresh

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

┌─ Best:      12.723727ms
├─ Worst:     60.790043ms
├─ Completed: 64.859763ms
└─ Errors:    0

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

┌─ Best:      578.845µs
├─ Worst:     53.476851ms
├─ Completed: 79.792993ms
└─ Errors:    0

List records

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

┌─ Best:      14.854708ms
├─ Worst:     73.826736ms
├─ Completed: 77.358451ms
└─ Errors:    0

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

┌─ Best:      724.407µs
├─ Worst:     26.733107ms
├─ Completed: 63.748917ms
└─ Errors:    0

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

┌─ Best:      1.648737ms
├─ Worst:     5.737697ms
├─ Completed: 2.641755739s
└─ Errors:    0

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

┌─ Best:      19.405075ms
├─ Worst:     267.112644ms
├─ Completed: 270.405077ms
└─ Errors:    0

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

┌─ Best:      18.90411ms
├─ Worst:     181.700629ms
├─ Completed: 183.453127ms
└─ 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:      21.009292ms
├─ Worst:     372.51544ms
├─ Completed: 373.36461ms
└─ Errors:    0

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

┌─ Best:      2.314464ms
├─ Worst:     7.259713ms
├─ Completed: 36.65669ms
└─ Errors:    0

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

┌─ Best:      2.95319ms
├─ Worst:     11.040551ms
├─ Completed: 51.824005ms
└─ Errors:    0

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

┌─ Best:      3.851639ms
├─ Worst:     14.153864ms
├─ Completed: 62.009229ms
└─ 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.026371ms
├─ Worst:     13.78938ms
├─ Completed: 85.376628ms
└─ Errors:    0

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

┌─ Best:      1.424694ms
├─ Worst:     5.023331ms
├─ Completed: 23.770482ms
└─ Errors:    0

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

┌─ Best:      2.529065ms
├─ Worst:     355.425191ms
├─ Completed: 355.963197ms
└─ Errors:    0

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

┌─ Best:      1.274973ms
├─ Worst:     31.104318ms
├─ Completed: 48.146132ms
└─ 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.262813ms
├─ Worst:     15.851723ms
├─ Completed: 32.278811ms
└─ Errors:    0

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

┌─ Best:      2.621227ms
├─ Worst:     198.248916ms
├─ Completed: 207.710414ms
└─ 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.253693ms
├─ Worst:     37.621948ms
├─ Completed: 51.740533ms
└─ 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.205053ms
├─ Worst:     12.725772ms
├─ Completed: 30.065391ms
└─ Errors:    0

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

┌─ Best:      3.78096ms
├─ Worst:     126.384586ms
├─ Completed: 206.325172ms
└─ Errors:    0

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

┌─ Best:      3.691958ms
├─ Worst:     158.808404ms
├─ Completed: 180.135144ms
└─ 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:      1.251293ms
├─ Worst:     26.712317ms
├─ Completed: 42.146437ms
└─ Errors:    0

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

┌─ Best:      51.774538ms
├─ Worst:     196.600564ms
├─ Completed: 781.889008ms
└─ 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:      1.545256ms
├─ Worst:     19.922007ms
├─ Completed: 40.230779ms
└─ Errors:    0

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

┌─ Best:      46.92141ms
├─ Worst:     195.790883ms
├─ Completed: 765.666592ms
└─ 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.411895ms
├─ Worst:     20.140211ms
├─ Completed: 40.683386ms
└─ Errors:    0

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

┌─ Best:      15.695204ms
├─ Worst:     107.786169ms
├─ Completed: 259.50708ms
└─ 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.337054ms
├─ Worst:     21.380745ms
├─ Completed: 40.156381ms
└─ Errors:    0

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

┌─ Best:      120.980753ms
├─ Worst:     238.796911ms
├─ Completed: 1.414301359s
└─ 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:      3.726879ms
├─ Worst:     36.669146ms
├─ Completed: 80.571329ms
└─ 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:      158.492995ms
├─ Worst:     240.966466ms
├─ Completed: 1.76342988s
└─ 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:      1.825499ms
├─ Worst:     26.584002ms
├─ Completed: 47.555783ms
└─ Errors:    0

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

┌─ Best:      2.394705ms
├─ Worst:     7.224997ms
├─ Completed: 4.078074667s
└─ Errors:    0

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

┌─ Best:      27.901098ms
├─ Worst:     344.9856ms
├─ Completed: 347.490067ms
└─ Errors:    0

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

┌─ Best:      9.909186ms
├─ Worst:     183.718442ms
├─ Completed: 186.233789ms
└─ 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:      23.858776ms
├─ Worst:     647.306849ms
├─ Completed: 648.887466ms
└─ Errors:    0

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

┌─ Best:      2.966391ms
├─ Worst:     13.573026ms
├─ Completed: 52.753846ms
└─ Errors:    0

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

┌─ Best:      3.661959ms
├─ Worst:     13.570466ms
├─ Completed: 63.441242ms
└─ Errors:    0

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

┌─ Best:      4.304286ms
├─ Worst:     16.909982ms
├─ Completed: 72.576981ms
└─ 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:      5.673541ms
├─ Worst:     19.874854ms
├─ Completed: 94.925943ms
└─ Errors:    0

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

┌─ Best:      1.967462ms
├─ Worst:     9.859506ms
├─ Completed: 32.839474ms
└─ Errors:    0

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

┌─ Best:      8.727255ms
├─ Worst:     666.832731ms
├─ Completed: 775.210782ms
└─ Errors:    0

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

┌─ Best:      1.207253ms
├─ Worst:     58.114389ms
├─ Completed: 71.277892ms
└─ Errors:    0

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

┌─ Best:      1.247734ms
├─ Worst:     13.918831ms
├─ Completed: 31.246939ms
└─ Errors:    0

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

┌─ Best:      8.553693ms
├─ Worst:     423.353802ms
├─ Completed: 496.375635ms
└─ 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.257534ms
├─ Worst:     71.442498ms
├─ Completed: 81.377046ms
└─ 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.232133ms
├─ Worst:     16.435459ms
├─ Completed: 32.727197ms
└─ Errors:    0

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

┌─ Best:      13.503108ms
├─ Worst:     188.824303ms
├─ Completed: 332.949237ms
└─ Errors:    0

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

┌─ Best:      12.965702ms
├─ Worst:     205.778891ms
├─ Completed: 353.929872ms
└─ 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.301134ms
├─ Worst:     44.342406ms
├─ Completed: 57.753073ms
└─ Errors:    0

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

┌─ Best:      140.272661ms
├─ Worst:     355.603343ms
├─ Completed: 1.856773471s
└─ 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.609338ms
├─ Worst:     38.372663ms
├─ Completed: 58.590005ms
└─ Errors:    0

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

┌─ Best:      129.852952ms
├─ Worst:     355.198715ms
├─ Completed: 1.710063258s
└─ 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.408735ms
├─ Worst:     36.690726ms
├─ Completed: 52.831344ms
└─ Errors:    0

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

┌─ Best:      49.744911ms
├─ Worst:     162.844123ms
├─ Completed: 658.360407ms
└─ 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.358415ms
├─ Worst:     37.299773ms
├─ Completed: 55.324493ms
└─ Errors:    0

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

┌─ Best:      317.515893ms
├─ Worst:     512.327489ms
├─ Completed: 3.588611928s
└─ 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:      4.113286ms
├─ Worst:     51.879418ms
├─ Completed: 99.261426ms
└─ 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:      410.415944ms
├─ Worst:     581.46469ms
├─ Completed: 4.447158938s
└─ 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.734139ms
├─ Worst:     41.983591ms
├─ Completed: 62.721463ms
└─ Errors:    0

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

┌─ Best:      3.448279ms
├─ Worst:     9.82175ms
├─ Completed: 6.118326511s
└─ Errors:    0

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

┌─ Best:      53.1564ms
├─ Worst:     439.027673ms
├─ Completed: 440.407048ms
└─ Errors:    0

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

┌─ Best:      16.114222ms
├─ Worst:     181.581491ms
├─ Completed: 185.048531ms
└─ 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:      31.640598ms
├─ Worst:     1.127769204s
├─ Completed: 1.130518794s
└─ Errors:    0

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

┌─ Best:      4.008846ms
├─ Worst:     20.844596ms
├─ Completed: 68.104492ms
└─ Errors:    0

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

┌─ Best:      4.709893ms
├─ Worst:     17.479639ms
├─ Completed: 76.612989ms
└─ Errors:    0

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

┌─ Best:      5.573904ms
├─ Worst:     25.618171ms
├─ Completed: 95.07532ms
└─ 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:      6.405833ms
├─ Worst:     25.031645ms
├─ Completed: 108.313913ms
└─ Errors:    0

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

┌─ Best:      3.125315ms
├─ Worst:     16.392667ms
├─ Completed: 53.669812ms
└─ Errors:    0

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

┌─ Best:      19.2617ms
├─ Worst:     549.56383ms
├─ Completed: 719.359329ms
└─ Errors:    0

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

┌─ Best:      1.225254ms
├─ Worst:     54.997669ms
├─ Completed: 74.777695ms
└─ 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.286655ms
├─ Worst:     14.632167ms
├─ Completed: 29.543938ms
└─ Errors:    0

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

┌─ Best:      18.692974ms
├─ Worst:     280.21625ms
├─ Completed: 484.45451ms
└─ 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.230175ms
├─ Worst:     64.379779ms
├─ Completed: 73.949568ms
└─ 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.186334ms
├─ Worst:     14.851891ms
├─ Completed: 31.132438ms
└─ Errors:    0

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

┌─ Best:      25.778577ms
├─ Worst:     202.732732ms
├─ Completed: 501.869693ms
└─ Errors:    0

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

┌─ Best:      26.178862ms
├─ Worst:     227.247699ms
├─ Completed: 489.629642ms
└─ 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.275894ms
├─ Worst:     43.429501ms
├─ Completed: 59.253843ms
└─ Errors:    0

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

┌─ Best:      292.431305ms
├─ Worst:     573.141864ms
├─ Completed: 3.509236825s
└─ 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.549138ms
├─ Worst:     48.679924ms
├─ Completed: 67.974348ms
└─ Errors:    0

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

┌─ Best:      255.093726ms
├─ Worst:     573.685058ms
├─ Completed: 3.415338786s
└─ 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.340216ms
├─ Worst:     45.392608ms
├─ Completed: 63.734661ms
└─ Errors:    0

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

┌─ Best:      148.304968ms
├─ Worst:     280.161425ms
├─ Completed: 1.68570213s
└─ 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.369136ms
├─ Worst:     38.053764ms
├─ Completed: 55.870972ms
└─ Errors:    0

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

┌─ Best:      686.07711ms
├─ Worst:     870.861502ms
├─ Completed: 7.262319613s
└─ 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.872965ms
├─ Worst:     61.853766ms
├─ Completed: 111.001024ms
└─ 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:      877.165968ms
├─ Worst:     1.014926219s
├─ Completed: 9.16192136s
└─ 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:      1.831021ms
├─ Worst:     39.189224ms
├─ Completed: 65.313292ms
└─ Errors:    0

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

┌─ Best:      5.660907ms
├─ Worst:     14.472412ms
├─ Completed: 8.600929421s
└─ Errors:    0

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

┌─ Best:      36.412153ms
├─ Worst:     742.194557ms
├─ Completed: 743.130688ms
└─ Errors:    0

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

┌─ Best:      9.682396ms
├─ Worst:     225.694051ms
├─ Completed: 229.203012ms
└─ 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:      79.524308ms
├─ Worst:     2.394187787s
├─ Completed: 2.397596508s
└─ Errors:    0

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

┌─ Best:      6.283315ms
├─ Worst:     31.449857ms
├─ Completed: 107.435685ms
└─ Errors:    0

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

┌─ Best:      7.062164ms
├─ Worst:     32.027584ms
├─ Completed: 108.893664ms
└─ Errors:    0

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

┌─ Best:      7.664852ms
├─ Worst:     30.193002ms
├─ Completed: 118.975786ms
└─ 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:      8.852826ms
├─ Worst:     38.181338ms
├─ Completed: 144.424453ms
└─ Errors:    0

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

┌─ Best:      5.236943ms
├─ Worst:     26.277556ms
├─ Completed: 85.992233ms
└─ Errors:    0

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

┌─ Best:      40.503327ms
├─ Worst:     399.336201ms
├─ Completed: 812.496328ms
└─ Errors:    0

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

┌─ Best:      1.226935ms
├─ Worst:     66.361279ms
├─ Completed: 80.665891ms
└─ 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.192055ms
├─ Worst:     18.528303ms
├─ Completed: 34.02393ms
└─ Errors:    0

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

┌─ Best:      38.618026ms
├─ Worst:     303.107776ms
├─ Completed: 705.752754ms
└─ 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.236215ms
├─ Worst:     45.344788ms
├─ Completed: 59.806123ms
└─ 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.182494ms
├─ Worst:     14.841979ms
├─ Completed: 29.448156ms
└─ Errors:    0

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

┌─ Best:      52.315953ms
├─ Worst:     214.933562ms
├─ Completed: 732.296023ms
└─ Errors:    0

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

┌─ Best:      51.420383ms
├─ Worst:     190.214546ms
├─ Completed: 713.092363ms
└─ 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.204015ms
├─ Worst:     43.71185ms
├─ Completed: 59.046277ms
└─ Errors:    0

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

┌─ Best:      620.838162ms
├─ Worst:     799.162909ms
├─ Completed: 6.728248571s
└─ 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:      1.59334ms
├─ Worst:     32.650358ms
├─ Completed: 53.260889ms
└─ Errors:    0

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

┌─ Best:      554.394585ms
├─ Worst:     942.125101ms
├─ Completed: 6.456200909s
└─ 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:      1.535298ms
├─ Worst:     37.821543ms
├─ Completed: 55.997206ms
└─ Errors:    0

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

┌─ Best:      344.950274ms
├─ Worst:     493.121687ms
├─ Completed: 3.715122185s
└─ 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.436297ms
├─ Worst:     37.949266ms
├─ Completed: 51.715315ms
└─ Errors:    0

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

┌─ Best:      1.416971787s
├─ Worst:     1.619354126s
├─ Completed: 14.722589842s
└─ 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:      3.753726ms
├─ Worst:     51.789602ms
├─ Completed: 94.764054ms
└─ 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:      1.806919806s
├─ Worst:     1.953309999s
├─ Completed: 18.600048219s
└─ 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:      1.867383ms
├─ Worst:     40.584627ms
├─ Completed: 63.864478ms
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      520.936513ms
├─ Worst:     4.821193497s
├─ Completed: 4.827802219s
└─ Errors:    0

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

┌─ Best:      1.045399506s
├─ Worst:     4.643634938s
├─ Completed: 4.65015426s
└─ Errors:    0

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

┌─ Best:      176.090974ms
├─ Worst:     819.452419ms
├─ Completed: 3.107223427s
└─ Errors:    0

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

┌─ Best:      167.889116ms
├─ Worst:     858.922174ms
├─ Completed: 3.112074359s
└─ Errors:    0

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

┌─ Best:      6.750085ms
├─ Worst:     15.433875ms
├─ Completed: 4.669228175s
└─ Errors:    0

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

┌─ Best:      6.801526ms
├─ Worst:     16.829653ms
├─ Completed: 4.611984827s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      1.227255ms
├─ Worst:     27.567949ms
├─ Completed: 44.410003ms
└─ Errors:    0

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

┌─ Best:      1.229616ms
├─ Worst:     15.208393ms
├─ Completed: 38.379447ms
└─ Errors:    0

Deleting records

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

┌─ Best:      839.65µs
├─ Worst:     11.868511ms
├─ Completed: 25.913409ms
└─ Errors:    0

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

┌─ Best:      902.331µs
├─ Worst:     22.394285ms
├─ Completed: 38.414447ms
└─ Errors:    0

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

┌─ Best:      880.531µs
├─ Worst:     5.393908ms
├─ Completed: 18.231672ms
└─ Errors:    0

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

┌─ Best:      900.972µs
├─ Worst:     3.626406ms
├─ Completed: 16.067524ms
└─ Errors:    0

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

┌─ Best:      864.691µs
├─ Worst:     3.795088ms
├─ Completed: 17.599904ms
└─ Errors:    0

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

┌─ Best:      1.068294ms
├─ Worst:     5.336428ms
├─ Completed: 21.664876ms
└─ Errors:    0

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

┌─ Best:      734.85µs
├─ Worst:     34.896484ms
├─ Completed: 50.472003ms
└─ Errors:    0

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

┌─ Best:      884.971µs
├─ Worst:     3.800449ms
├─ Completed: 16.778894ms
└─ Errors:    0

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

┌─ Best:      106.415957ms
├─ Worst:     4.169735918s
├─ Completed: 12.310460881s
└─ Errors:    0

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

┌─ Best:      287.970485ms
├─ Worst:     14.935565023s
├─ Completed: 31.111862256s
└─ Errors:    0