Skip to content

Latest commit

 

History

History
1069 lines (1060 loc) · 36.9 KB

hetzner_cax41.md

File metadata and controls

1069 lines (1060 loc) · 36.9 KB

Creating organizations (100)

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

┌─ Best:      2.224604ms
├─ Worst:     32.153292ms
├─ Completed: 55.47813ms
└─ Errors:    0

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

┌─ Best:      3.429605ms
├─ Worst:     36.420496ms
├─ Completed: 56.076206ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      2.588564ms
├─ Worst:     11.959898ms
├─ Completed: 30.918886ms
└─ Errors:    0

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

┌─ Best:      3.083045ms
├─ Worst:     9.320214ms
├─ Completed: 25.584437ms
└─ Errors:    0

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

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

┌─ Best:      656.819546ms
├─ Worst:     3.727229929s
├─ Completed: 8.848657202s
└─ Errors:    0

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

┌─ Best:      574.900278ms
├─ Worst:     5.799697794s
├─ Completed: 8.733694742s
└─ Errors:    0

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

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

┌─ Best:      5.149405ms
├─ Worst:     5.161409883s
├─ Completed: 6.09365528s
└─ Errors:    0

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

┌─ Best:      6.994326ms
├─ Worst:     6.923455247s
├─ Completed: 6.981749135s
└─ Errors:    0

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

┌─ Best:      7.431565ms
├─ Worst:     14.90459699s
├─ Completed: 15.973853918s
└─ Errors:    0

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

┌─ Best:      4.721003ms
├─ Worst:     11.814321789s
├─ Completed: 17.165821039s
└─ Errors:    0

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

┌─ Best:      3.855321ms
├─ Worst:     20.215586422s
├─ Completed: 31.414178183s
└─ Errors:    0

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

┌─ Best:      4.407564ms
├─ Worst:     18.899452919s
├─ Completed: 34.250692984s
└─ Errors:    0

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

┌─ Best:      3.781548ms
├─ Worst:     26.146524268s
├─ Completed: 1m2.982148767s
└─ Errors:    0

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

┌─ Best:      4.99419ms
├─ Worst:     26.276706144s
├─ Completed: 1m10.148099347s
└─ 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:      808.460403ms
├─ Worst:     4.372955171s
├─ Completed: 4.373209612s
└─ Errors:    0

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

┌─ Best:      270.284337ms
├─ Worst:     348.354747ms
├─ Completed: 7.147332426s
└─ Errors:    0

User auth refresh

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

┌─ Best:      8.157551ms
├─ Worst:     231.9484ms
├─ Completed: 233.393006ms
└─ Errors:    0

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

┌─ Best:      938.844µs
├─ Worst:     127.406278ms
├─ Completed: 198.400745ms
└─ Errors:    0

List records

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

┌─ Best:      9.425355ms
├─ Worst:     282.704531ms
├─ Completed: 283.877055ms
└─ Errors:    0

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

┌─ Best:      3.202612ms
├─ Worst:     117.16183ms
├─ Completed: 241.815245ms
└─ Errors:    0

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

┌─ Best:      2.510688ms
├─ Worst:     23.330404ms
├─ Completed: 4.391797287s
└─ Errors:    0

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

┌─ Best:      15.353534ms
├─ Worst:     604.203202ms
├─ Completed: 609.064139ms
└─ Errors:    0

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

┌─ Best:      91.265237ms
├─ Worst:     542.20236ms
├─ Completed: 543.180004ms
└─ 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:      49.276489ms
├─ Worst:     640.990074ms
├─ Completed: 641.912157ms
└─ Errors:    0

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

┌─ Best:      7.641986ms
├─ Worst:     60.599045ms
├─ Completed: 174.599191ms
└─ Errors:    0

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

┌─ Best:      7.185424ms
├─ Worst:     30.858943ms
├─ Completed: 140.852831ms
└─ Errors:    0

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

┌─ Best:      7.829146ms
├─ Worst:     38.072886ms
├─ Completed: 194.827404ms
└─ 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:      9.852993ms
├─ Worst:     39.964811ms
├─ Completed: 208.399003ms
└─ Errors:    0

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

┌─ Best:      3.893773ms
├─ Worst:     12.33724ms
├─ Completed: 73.410638ms
└─ Errors:    0

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

┌─ Best:      37.07128ms
├─ Worst:     126.144445ms
├─ Completed: 896.103353ms
└─ Errors:    0

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

┌─ Best:      2.419208ms
├─ Worst:     21.591629ms
├─ Completed: 61.870036ms
└─ Errors:    0

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

┌─ Best:      3.11289ms
├─ Worst:     16.363052ms
├─ Completed: 66.576769ms
└─ Errors:    0

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

┌─ Best:      125.89155ms
├─ Worst:     424.519713ms
├─ Completed: 3.557680935s
└─ Errors:    0

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

┌─ Best:      3.916212ms
├─ Worst:     24.841875ms
├─ Completed: 75.152108ms
└─ 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:      3.598651ms
├─ Worst:     17.727893ms
├─ Completed: 73.34954ms
└─ Errors:    0

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

┌─ Best:      28.608565ms
├─ Worst:     95.164883ms
├─ Completed: 503.84014ms
└─ Errors:    0

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

┌─ Best:      23.74655ms
├─ Worst:     64.69963ms
├─ Completed: 464.569285ms
└─ 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:      27.261399ms
├─ Worst:     72.561492ms
├─ Completed: 465.633114ms
└─ Errors:    0

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

┌─ Best:      551.585226ms
├─ Worst:     740.456208ms
├─ Completed: 6.710191367s
└─ 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:      525.231539ms
├─ Worst:     813.328244ms
├─ Completed: 6.957945278s
└─ Errors:    0

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

┌─ Best:      189.273939ms
├─ Worst:     414.215027ms
├─ Completed: 3.35212455s
└─ 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:      184.60028ms
├─ Worst:     388.866089ms
├─ Completed: 3.24612373s
└─ Errors:    0

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

┌─ Best:      250.463031ms
├─ Worst:     657.527673ms
├─ Completed: 5.224076439s
└─ 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:      361.370286ms
├─ Worst:     587.738043ms
├─ Completed: 5.180985139s
└─ 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.365147028s
├─ Worst:     1.83531001s
├─ Completed: 16.047639557s
└─ 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:      1.399416679s
├─ Worst:     1.930207117s
├─ Completed: 16.376941757s
└─ 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:      4.27769928s
├─ Worst:     5.190773854s
├─ Completed: 48.294183654s
└─ 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.453537551s
├─ Worst:     5.249813855s
├─ Completed: 49.206694119s
└─ Errors:    0

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

┌─ Best:      3.866447ms
├─ Worst:     23.9116ms
├─ Completed: 6.653159189s
└─ Errors:    0

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

┌─ Best:      7.931773ms
├─ Worst:     1.007423438s
├─ Completed: 1.008343119s
└─ Errors:    0

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

┌─ Best:      117.238034ms
├─ Worst:     923.007729ms
├─ Completed: 925.919575ms
└─ 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:      103.01713ms
├─ Worst:     1.214735802s
├─ Completed: 1.218115809s
└─ Errors:    0

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

┌─ Best:      8.255894ms
├─ Worst:     22.015836ms
├─ Completed: 148.806725ms
└─ Errors:    0

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

┌─ Best:      9.670696ms
├─ Worst:     32.152692ms
├─ Completed: 156.548017ms
└─ Errors:    0

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

┌─ Best:      12.528261ms
├─ Worst:     39.039063ms
├─ Completed: 222.577083ms
└─ 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:      11.73054ms
├─ Worst:     32.234852ms
├─ Completed: 220.745959ms
└─ Errors:    0

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

┌─ Best:      5.388649ms
├─ Worst:     18.055709ms
├─ Completed: 95.680675ms
└─ Errors:    0

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

┌─ Best:      127.259125ms
├─ Worst:     211.976702ms
├─ Completed: 1.771621537s
└─ Errors:    0

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

┌─ Best:      2.973685ms
├─ Worst:     23.277637ms
├─ Completed: 77.324564ms
└─ 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.396724ms
├─ Worst:     18.62983ms
├─ Completed: 61.406858ms
└─ Errors:    0

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

┌─ Best:      527.651879ms
├─ Worst:     817.159423ms
├─ Completed: 6.807930776s
└─ 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.916685ms
├─ Worst:     19.932471ms
├─ Completed: 71.705793ms
└─ 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:      3.544446ms
├─ Worst:     17.718188ms
├─ Completed: 76.022319ms
└─ Errors:    0

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

┌─ Best:      97.706833ms
├─ Worst:     152.390799ms
├─ Completed: 1.247569635s
└─ Errors:    0

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

┌─ Best:      115.58506ms
├─ Worst:     183.940767ms
├─ Completed: 1.553782064s
└─ 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:      110.670692ms
├─ Worst:     192.073459ms
├─ Completed: 1.582815217s
└─ Errors:    0

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

┌─ Best:      3.021076087s
├─ Worst:     4.341974632s
├─ Completed: 39.5666601s
└─ 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.428434786s
├─ Worst:     4.224437732s
├─ Completed: 38.690647069s
└─ Errors:    0

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

┌─ Best:      514.89282ms
├─ Worst:     936.1803ms
├─ Completed: 8.310881225s
└─ 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:      650.282627ms
├─ Worst:     905.921751ms
├─ Completed: 8.174937035s
└─ Errors:    0

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

┌─ Best:      962.263699ms
├─ Worst:     1.406196818s
├─ Completed: 12.769887876s
└─ 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:      980.689377ms
├─ Worst:     1.528338014s
├─ Completed: 12.847350501s
└─ Errors:    0

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

┌─ Best:      4.026926497s
├─ Worst:     4.467296259s
├─ Completed: 42.54519424s
└─ 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.985638014s
├─ Worst:     4.582904714s
├─ Completed: 42.637760429s
└─ 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:      11.227381004s
├─ Worst:     12.743995862s
├─ Completed: 2m1.244287931s
└─ 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:      11.373928178s
├─ Worst:     12.772241741s
├─ Completed: 2m2.165002569s
└─ Errors:    0

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

┌─ Best:      6.172022ms
├─ Worst:     45.381644ms
├─ Completed: 10.646071316s
└─ Errors:    0

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

┌─ Best:      118.203746ms
├─ Worst:     1.626314698s
├─ Completed: 1.629041787s
└─ Errors:    0

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

┌─ Best:      141.089426ms
├─ Worst:     1.419720127s
├─ Completed: 1.421147892s
└─ 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:      332.849468ms
├─ Worst:     2.233863442s
├─ Completed: 2.245260923s
└─ Errors:    0

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

┌─ Best:      15.486575ms
├─ Worst:     32.144554ms
├─ Completed: 228.031409ms
└─ Errors:    0

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

┌─ Best:      13.058007ms
├─ Worst:     56.51856ms
├─ Completed: 282.447438ms
└─ Errors:    0

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

┌─ Best:      18.711466ms
├─ Worst:     43.805835ms
├─ Completed: 279.381864ms
└─ 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:      12.262003ms
├─ Worst:     55.458675ms
├─ Completed: 290.855502ms
└─ Errors:    0

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

┌─ Best:      9.646554ms
├─ Worst:     27.908738ms
├─ Completed: 158.835156ms
└─ Errors:    0

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

┌─ Best:      220.59617ms
├─ Worst:     289.992249ms
├─ Completed: 2.480590572s
└─ Errors:    0

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

┌─ Best:      2.404369ms
├─ Worst:     64.340463ms
├─ Completed: 112.843512ms
└─ Errors:    0

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

┌─ Best:      3.150371ms
├─ Worst:     26.162931ms
├─ Completed: 66.811031ms
└─ Errors:    0

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

┌─ Best:      448.380216ms
├─ Worst:     720.222724ms
├─ Completed: 6.015179964s
└─ 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.97809ms
├─ Worst:     31.207707ms
├─ Completed: 91.021591ms
└─ 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:      3.367851ms
├─ Worst:     18.280743ms
├─ Completed: 71.548044ms
└─ Errors:    0

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

┌─ Best:      182.324499ms
├─ Worst:     283.147ms
├─ Completed: 2.294509343s
└─ Errors:    0

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

┌─ Best:      237.090357ms
├─ Worst:     363.750866ms
├─ Completed: 3.150548615s
└─ 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:      229.755328ms
├─ Worst:     359.380564ms
├─ Completed: 3.044694265s
└─ Errors:    0

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

┌─ Best:      7.671016391s
├─ Worst:     8.873951243s
├─ Completed: 1m23.782159633s
└─ 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:      7.776922143s
├─ Worst:     9.114355556s
├─ Completed: 1m25.118465993s
└─ Errors:    0

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

┌─ Best:      1.326436851s
├─ Worst:     1.925416471s
├─ Completed: 17.035689952s
└─ 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.447179545s
├─ Worst:     1.844032729s
├─ Completed: 16.774017884s
└─ Errors:    0

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

┌─ Best:      5.494700978s
├─ Worst:     6.521753735s
├─ Completed: 1m1.027358836s
└─ 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:      5.635952429s
├─ Worst:     6.714229239s
├─ Completed: 1m2.520119339s
└─ Errors:    0

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

┌─ Best:      7.864303477s
├─ Worst:     8.914007995s
├─ Completed: 1m24.517826772s
└─ 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:      7.769026761s
├─ Worst:     8.829633815s
├─ Completed: 1m24.495449278s
└─ 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:      22.677961378s
├─ Worst:     24.955142503s
├─ Completed: 4m2.676223896s
└─ 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:      22.550463839s
├─ Worst:     25.234997016s
├─ Completed: 4m2.419960658s
└─ Errors:    0

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

┌─ Best:      10.822814ms
├─ Worst:     38.017948ms
├─ Completed: 17.006737849s
└─ Errors:    0

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

┌─ Best:      224.33431ms
├─ Worst:     3.17180952s
├─ Completed: 3.180465284s
└─ Errors:    0

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

┌─ Best:      574.13311ms
├─ Worst:     2.86552579s
├─ Completed: 2.872450585s
└─ 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:      51.908415ms
├─ Worst:     3.643269308s
├─ Completed: 3.646372843s
└─ Errors:    0

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

┌─ Best:      24.038917ms
├─ Worst:     50.769368ms
├─ Completed: 353.696769ms
└─ Errors:    0

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

┌─ Best:      23.149113ms
├─ Worst:     62.904107ms
├─ Completed: 382.961789ms
└─ Errors:    0

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

┌─ Best:      27.862096ms
├─ Worst:     69.289818ms
├─ Completed: 434.839639ms
└─ 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.415768ms
├─ Worst:     69.225136ms
├─ Completed: 427.89016ms
└─ Errors:    0

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

┌─ Best:      18.251849ms
├─ Worst:     51.68205ms
├─ Completed: 340.913255ms
└─ Errors:    0

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

┌─ Best:      375.336974ms
├─ Worst:     534.349028ms
├─ Completed: 4.248046388s
└─ Errors:    0

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

┌─ Best:      2.785893ms
├─ Worst:     34.464967ms
├─ Completed: 93.675892ms
└─ 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.245051ms
├─ Worst:     16.53992ms
├─ Completed: 53.171496ms
└─ Errors:    0

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

┌─ Best:      729.436655ms
├─ Worst:     977.324211ms
├─ Completed: 8.886003317s
└─ 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.367856ms
├─ Worst:     29.347019ms
├─ Completed: 86.630093ms
└─ 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:      2.890854ms
├─ Worst:     20.115296ms
├─ Completed: 77.316888ms
└─ Errors:    0

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

┌─ Best:      346.808003ms
├─ Worst:     465.486248ms
├─ Completed: 4.160974975s
└─ Errors:    0

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

┌─ Best:      454.315985ms
├─ Worst:     655.762134ms
├─ Completed: 6.078290454s
└─ 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:      512.10164ms
├─ Worst:     668.065847ms
├─ Completed: 5.976523984s
└─ Errors:    0

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

┌─ Best:      15.884647316s
├─ Worst:     17.683991525s
├─ Completed: 2m50.397460714s
└─ 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:      15.590574498s
├─ Worst:     18.108623623s
├─ Completed: 2m52.901358226s
└─ Errors:    0

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

┌─ Best:      2.600605803s
├─ Worst:     3.568368429s
├─ Completed: 33.38570697s
└─ 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.836757781s
├─ Worst:     3.511790894s
├─ Completed: 33.100700159s
└─ Errors:    0

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

┌─ Best:      11.090636907s
├─ Worst:     13.153692164s
├─ Completed: 2m3.73287122s
└─ 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:      11.599287167s
├─ Worst:     13.201024129s
├─ Completed: 2m3.143884187s
└─ Errors:    0

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

┌─ Best:      16.59297735s
├─ Worst:     17.758042274s
├─ Completed: 2m52.870290016s
└─ 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:      15.961817746s
├─ Worst:     18.086049948s
├─ Completed: 2m50.872503349s
└─ 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:      46.723935229s
├─ Worst:     49.626715708s
├─ Completed: 8m6.948395781s
└─ 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:      46.943237819s
├─ Worst:     49.784393202s
├─ Completed: 8m7.252074908s
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      3.05398813s
├─ Worst:     15.537700207s
├─ Completed: 15.548672961s
└─ Errors:    0

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

┌─ Best:      3.015513031s
├─ Worst:     14.954085392s
├─ Completed: 14.956917771s
└─ Errors:    0

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

┌─ Best:      710.798842ms
├─ Worst:     1.774633952s
├─ Completed: 14.473433956s
└─ Errors:    0

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

┌─ Best:      404.957114ms
├─ Worst:     1.585544667s
├─ Completed: 13.851251448s
└─ Errors:    0

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

┌─ Best:      20.40273ms
├─ Worst:     57.491523ms
├─ Completed: 14.102107062s
└─ Errors:    0

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

┌─ Best:      20.296368ms
├─ Worst:     60.923941ms
├─ Completed: 14.08441386s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      2.402735ms
├─ Worst:     27.042889ms
├─ Completed: 63.739597ms
└─ Errors:    0

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

┌─ Best:      2.311614ms
├─ Worst:     13.966207ms
├─ Completed: 46.328769ms
└─ Errors:    0

Deleting records

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

┌─ Best:      3.21082ms
├─ Worst:     16.483303ms
├─ Completed: 71.370804ms
└─ Errors:    0

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

┌─ Best:      3.010218ms
├─ Worst:     9.431059ms
├─ Completed: 54.609539ms
└─ Errors:    0

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

┌─ Best:      3.460262ms
├─ Worst:     35.126257ms
├─ Completed: 91.345246ms
└─ Errors:    0

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

┌─ Best:      2.868858ms
├─ Worst:     17.250347ms
├─ Completed: 65.733646ms
└─ Errors:    0

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

┌─ Best:      3.451021ms
├─ Worst:     11.739512ms
├─ Completed: 69.258148ms
└─ Errors:    0

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

┌─ Best:      3.418861ms
├─ Worst:     11.36747ms
├─ Completed: 59.661287ms
└─ Errors:    0

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

┌─ Best:      3.15718ms
├─ Worst:     17.566588ms
├─ Completed: 66.869652ms
└─ Errors:    0

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

┌─ Best:      3.437221ms
├─ Worst:     42.485221ms
├─ Completed: 97.200717ms
└─ Errors:    0

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

┌─ Best:      390.675317ms
├─ Worst:     23.828804403s
├─ Completed: 35.852184434s
└─ Errors:    0

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

┌─ Best:      1.134258708s
├─ Worst:     1m2.310703441s
├─ Completed: 2m3.385229668s
└─ Errors:    0