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 0.23.x

Creating organizations (100)

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

┌─ Best:      1.941848ms
├─ Worst:     20.396041ms
├─ Completed: 36.742346ms
└─ Errors:    0

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

┌─ Best:      1.663126ms
├─ Worst:     9.295677ms
├─ Completed: 24.882779ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      876.404µs
├─ Worst:     6.080664ms
├─ Completed: 16.813987ms
└─ Errors:    0

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

┌─ Best:      2.957692ms
├─ Worst:     8.213673ms
├─ Completed: 25.450582ms
└─ Errors:    0

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

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

┌─ Best:      1.569040664s
├─ Worst:     4.563699886s
├─ Completed: 17.244721668s
└─ Errors:    0

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

┌─ Best:      1.81803351s
├─ Worst:     4.570190459s
├─ Completed: 17.476441158s
└─ Errors:    0

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

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

┌─ Best:      8.911195ms
├─ Worst:     1.848211674s
├─ Completed: 3.553960818s
└─ Errors:    0

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

┌─ Best:      8.641915ms
├─ Worst:     2.045605228s
├─ Completed: 3.842200499s
└─ Errors:    0

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

┌─ Best:      4.94998ms
├─ Worst:     3.529433867s
├─ Completed: 28.310648016s
└─ Errors:    0

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

┌─ Best:      10.245841ms
├─ Worst:     2.65728407s
├─ Completed: 23.631220555s
└─ Errors:    0

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

┌─ Best:      5.609743ms
├─ Worst:     5.218294868s
├─ Completed: 45.504794524s
└─ Errors:    0

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

┌─ Best:      6.529386ms
├─ Worst:     4.205687863s
├─ Completed: 35.516598432s
└─ Errors:    0

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

┌─ Best:      3.233053ms
├─ Worst:     4.247822507s
├─ Completed: 1m43.241194245s
└─ Errors:    0

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

┌─ Best:      5.190261ms
├─ Worst:     4.914585489s
├─ Completed: 1m25.379997417s
└─ 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:      5.862067138s
├─ Worst:     9.123482682s
├─ Completed: 9.125310769s
└─ Errors:    0

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

┌─ Best:      152.087102ms
├─ Worst:     475.763027ms
├─ Completed: 8.820845381s
└─ Errors:    0

User auth refresh

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

┌─ Best:      310.609991ms
├─ Worst:     2.76970094s
├─ Completed: 2.78198071s
└─ Errors:    0

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

┌─ Best:      4.462578ms
├─ Worst:     505.54939ms
├─ Completed: 1.757375077s
└─ Errors:    0

List records

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

┌─ Best:      267.440055ms
├─ Worst:     1.360656612s
├─ Completed: 1.385659915s
└─ Errors:    0

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

┌─ Best:      4.456059ms
├─ Worst:     599.693296ms
├─ Completed: 1.647109227s
└─ Errors:    0

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

┌─ Best:      1.458926ms
├─ Worst:     7.069469ms
├─ Completed: 2.317049812s
└─ Errors:    0

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

┌─ Best:      496.827275ms
├─ Worst:     1.198214469s
├─ Completed: 1.205287338s
└─ Errors:    0

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

┌─ Best:      195.879843ms
├─ Worst:     796.626425ms
├─ Completed: 809.589318ms
└─ 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:      448.683199ms
├─ Worst:     1.36142542s
├─ Completed: 1.368563129s
└─ Errors:    0

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

┌─ Best:      6.454546ms
├─ Worst:     35.158264ms
├─ Completed: 190.406501ms
└─ 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.8653ms
├─ Worst:     67.572637ms
├─ Completed: 236.119768ms
└─ Errors:    0

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

┌─ Best:      6.820668ms
├─ Worst:     63.993262ms
├─ Completed: 300.907954ms
└─ 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:      6.066385ms
├─ Worst:     66.473393ms
├─ Completed: 353.63617ms
└─ Errors:    0

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

┌─ Best:      1.948208ms
├─ Worst:     26.096867ms
├─ Completed: 127.698284ms
└─ Errors:    0

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

┌─ Best:      5.397062ms
├─ Worst:     205.369842ms
├─ Completed: 390.532241ms
└─ Errors:    0

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

┌─ Best:      1.606046ms
├─ Worst:     37.630275ms
├─ Completed: 113.396385ms
└─ 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.057892ms
├─ Worst:     25.161983ms
├─ Completed: 118.810247ms
└─ Errors:    0

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

┌─ Best:      10.381602ms
├─ Worst:     165.388918ms
├─ Completed: 374.888737ms
└─ 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.746607ms
├─ Worst:     25.797265ms
├─ Completed: 111.109375ms
└─ Errors:    0

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

┌─ Best:      2.36729ms
├─ Worst:     35.185224ms
├─ Completed: 91.031613ms
└─ Errors:    0

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

┌─ Best:      4.254458ms
├─ Worst:     104.634189ms
├─ Completed: 280.872993ms
└─ Errors:    0

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

┌─ Best:      5.995504ms
├─ Worst:     92.315779ms
├─ Completed: 302.15976ms
└─ 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.135289ms
├─ Worst:     25.878466ms
├─ Completed: 97.808122ms
└─ Errors:    0

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

┌─ Best:      75.36307ms
├─ Worst:     265.57697ms
├─ Completed: 1.496662903s
└─ 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.861648ms
├─ Worst:     24.769261ms
├─ Completed: 102.018619ms
└─ Errors:    0

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

┌─ Best:      29.06688ms
├─ Worst:     233.89648ms
├─ Completed: 1.053674966s
└─ 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:      2.25981ms
├─ Worst:     27.452312ms
├─ Completed: 100.391612ms
└─ Errors:    0

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

┌─ Best:      24.103539ms
├─ Worst:     218.628537ms
├─ Completed: 1.133105253s
└─ 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.584126ms
├─ Worst:     20.065242ms
├─ Completed: 97.295159ms
└─ Errors:    0

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

┌─ Best:      491.243258ms
├─ Worst:     746.824267ms
├─ Completed: 6.315496337s
└─ 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.317333ms
├─ Worst:     46.643352ms
├─ Completed: 184.718639ms
└─ 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:      700.384558ms
├─ Worst:     994.549246ms
├─ Completed: 8.471623127s
└─ 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:      2.022688ms
├─ Worst:     24.28802ms
├─ Completed: 124.784592ms
└─ Errors:    0

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

┌─ Best:      2.33921ms
├─ Worst:     7.848272ms
├─ Completed: 3.363263664s
└─ Errors:    0

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

┌─ Best:      222.712995ms
├─ Worst:     1.586288361s
├─ Completed: 1.586938923s
└─ Errors:    0

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

┌─ Best:      234.295443ms
├─ Worst:     851.30682ms
├─ Completed: 856.823202ms
└─ 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:      593.588561ms
├─ Worst:     1.651647391s
├─ Completed: 1.660570188s
└─ Errors:    0

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

┌─ Best:      4.971141ms
├─ Worst:     54.521024ms
├─ Completed: 215.988689ms
└─ Errors:    0

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

┌─ Best:      4.589619ms
├─ Worst:     56.10519ms
├─ Completed: 281.92636ms
└─ Errors:    0

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

┌─ Best:      5.692223ms
├─ Worst:     60.363168ms
├─ Completed: 311.818842ms
└─ 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:      10.349682ms
├─ Worst:     84.559347ms
├─ Completed: 380.975367ms
└─ Errors:    0

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

┌─ Best:      3.773376ms
├─ Worst:     30.794007ms
├─ Completed: 148.087849ms
└─ Errors:    0

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

┌─ Best:      14.075698ms
├─ Worst:     386.31163ms
├─ Completed: 932.581557ms
└─ Errors:    0

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

┌─ Best:      2.51649ms
├─ Worst:     27.551113ms
├─ Completed: 105.642595ms
└─ Errors:    0

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

┌─ Best:      3.093533ms
├─ Worst:     36.884872ms
├─ Completed: 101.141896ms
└─ Errors:    0

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

┌─ Best:      26.562629ms
├─ Worst:     221.393031ms
├─ Completed: 915.318966ms
└─ 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.667767ms
├─ Worst:     24.751702ms
├─ Completed: 99.082568ms
└─ Errors:    0

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

┌─ Best:      2.036488ms
├─ Worst:     50.330767ms
├─ Completed: 114.743393ms
└─ Errors:    0

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

┌─ Best:      20.478005ms
├─ Worst:     262.747481ms
├─ Completed: 883.865878ms
└─ Errors:    0

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

┌─ Best:      35.424026ms
├─ Worst:     250.08367ms
├─ Completed: 881.385147ms
└─ 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.529687ms
├─ Worst:     53.44402ms
├─ Completed: 118.383688ms
└─ Errors:    0

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

┌─ Best:      238.650823ms
├─ Worst:     507.56965ms
├─ Completed: 3.938690336s
└─ 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.886408ms
├─ Worst:     37.365674ms
├─ Completed: 119.814853ms
└─ Errors:    0

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

┌─ Best:      219.674225ms
├─ Worst:     425.591993ms
├─ Completed: 2.995025133s
└─ 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.688611ms
├─ Worst:     25.826666ms
├─ Completed: 96.905719ms
└─ Errors:    0

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

┌─ Best:      197.055372ms
├─ Worst:     523.568477ms
├─ Completed: 3.405440426s
└─ 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.687687ms
├─ Worst:     25.173263ms
├─ Completed: 92.32894ms
└─ 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.375906271s
├─ Worst:     1.826784686s
├─ Completed: 16.491385836s
└─ 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.036456ms
├─ Worst:     47.268155ms
├─ Completed: 239.993829ms
└─ 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.890655119s
├─ Worst:     2.451547627s
├─ Completed: 22.234159964s
└─ Errors:    0

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

┌─ Best:      2.185849ms
├─ Worst:     34.218301ms
├─ Completed: 124.385673ms
└─ Errors:    0

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

┌─ Best:      3.412854ms
├─ Worst:     10.000561ms
├─ Completed: 5.004928608s
└─ Errors:    0

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

┌─ Best:      457.120366ms
├─ Worst:     1.99695772s
├─ Completed: 2.045874242s
└─ Errors:    0

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

┌─ Best:      168.325695ms
├─ Worst:     853.777443ms
├─ Completed: 856.135173ms
└─ 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:      465.111599ms
├─ Worst:     2.164043331s
├─ Completed: 2.187384507s
└─ Errors:    0

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

┌─ Best:      8.662116ms
├─ Worst:     51.094211ms
├─ Completed: 273.81389ms
└─ Errors:    0

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

┌─ Best:      5.468423ms
├─ Worst:     85.519753ms
├─ Completed: 329.309039ms
└─ Errors:    0

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

┌─ Best:      7.880913ms
├─ Worst:     73.580063ms
├─ Completed: 385.03975ms
└─ 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:      8.910397ms
├─ Worst:     92.638942ms
├─ Completed: 453.890074ms
└─ Errors:    0

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

┌─ Best:      8.025153ms
├─ Worst:     39.661324ms
├─ Completed: 216.411533ms
└─ Errors:    0

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

┌─ Best:      93.110424ms
├─ Worst:     286.897825ms
├─ Completed: 1.465977972s
└─ Errors:    0

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

┌─ Best:      1.923888ms
├─ Worst:     63.584783ms
├─ Completed: 125.563119ms
└─ 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.719967ms
├─ Worst:     18.887518ms
├─ Completed: 88.677926ms
└─ Errors:    0

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

┌─ Best:      37.904396ms
├─ Worst:     220.625751ms
├─ Completed: 1.473188563s
└─ 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.017848ms
├─ Worst:     56.538674ms
├─ Completed: 133.730112ms
└─ 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.739807ms
├─ Worst:     32.551855ms
├─ Completed: 93.651267ms
└─ Errors:    0

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

┌─ Best:      72.069938ms
├─ Worst:     251.167997ms
├─ Completed: 1.559945204s
└─ Errors:    0

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

┌─ Best:      102.985625ms
├─ Worst:     290.137279ms
├─ Completed: 1.647062323s
└─ 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.369286ms
├─ Worst:     33.265338ms
├─ Completed: 102.684265ms
└─ Errors:    0

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

┌─ Best:      802.345915ms
├─ Worst:     1.12552301s
├─ Completed: 10.487407133s
└─ Errors:    0

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

┌─ Best:      2.297529ms
├─ Worst:     26.732151ms
├─ Completed: 97.555923ms
└─ Errors:    0

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

┌─ Best:      656.026592ms
├─ Worst:     935.217865ms
├─ Completed: 8.131697293s
└─ 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.783214ms
├─ Worst:     28.127827ms
├─ Completed: 99.41268ms
└─ Errors:    0

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

┌─ Best:      739.33802ms
├─ Worst:     1.018787385s
├─ Completed: 9.38279906s
└─ 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:      3.264066ms
├─ Worst:     24.466795ms
├─ Completed: 111.482328ms
└─ Errors:    0

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

┌─ Best:      2.918195471s
├─ Worst:     3.988987656s
├─ Completed: 36.821004578s
└─ 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:      8.208783ms
├─ Worst:     76.568551ms
├─ Completed: 246.924346ms
└─ Errors:    0

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

┌─ Best:      3.84743005s
├─ Worst:     5.328554047s
├─ Completed: 50.085244641s
└─ 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:      2.054495ms
├─ Worst:     29.892342ms
├─ Completed: 128.447554ms
└─ Errors:    0

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

┌─ Best:      5.605281ms
├─ Worst:     16.586963ms
├─ Completed: 7.838620126s
└─ Errors:    0

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

┌─ Best:      246.688617ms
├─ Worst:     3.121221681s
├─ Completed: 3.16569317s
└─ Errors:    0

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

┌─ Best:      165.611936ms
├─ Worst:     841.737975ms
├─ Completed: 852.842377ms
└─ 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:      562.72648ms
├─ Worst:     3.532512561s
├─ Completed: 3.563587309s
└─ Errors:    0

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

┌─ Best:      10.791999ms
├─ Worst:     70.903917ms
├─ Completed: 415.141469ms
└─ 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.972658ms
├─ Worst:     84.504855ms
├─ Completed: 489.701046ms
└─ Errors:    0

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

┌─ Best:      23.661372ms
├─ Worst:     104.938523ms
├─ Completed: 506.613923ms
└─ 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:      11.219962ms
├─ Worst:     140.59674ms
├─ Completed: 625.928622ms
└─ Errors:    0

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

┌─ Best:      6.364246ms
├─ Worst:     71.454558ms
├─ Completed: 360.621934ms
└─ Errors:    0

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

┌─ Best:      93.264074ms
├─ Worst:     394.004168ms
├─ Completed: 2.938578519s
└─ Errors:    0

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

┌─ Best:      2.445058ms
├─ Worst:     87.270469ms
├─ Completed: 179.647535ms
└─ 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.668692ms
├─ Worst:     27.112955ms
├─ Completed: 95.173165ms
└─ Errors:    0

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

┌─ Best:      69.315539ms
├─ Worst:     374.971534ms
├─ Completed: 2.628071154s
└─ Errors:    0

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

┌─ Best:      2.007014ms
├─ Worst:     48.329026ms
├─ Completed: 130.320694ms
└─ 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.570498ms
├─ Worst:     20.96419ms
├─ Completed: 93.059506ms
└─ Errors:    0

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

┌─ Best:      188.120702ms
├─ Worst:     407.711192ms
├─ Completed: 3.180661142s
└─ Errors:    0

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

┌─ Best:      145.176991ms
├─ Worst:     424.34806ms
├─ Completed: 3.105404527s
└─ 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:      3.068781ms
├─ Worst:     38.321512ms
├─ Completed: 107.707324ms
└─ Errors:    0

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

┌─ Best:      2.106701438s
├─ Worst:     2.605572683s
├─ Completed: 23.429935335s
└─ Errors:    0

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

┌─ Best:      2.384297ms
├─ Worst:     24.496811ms
├─ Completed: 105.689057ms
└─ Errors:    0

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

┌─ Best:      1.709238257s
├─ Worst:     2.019786347s
├─ Completed: 18.794680103s
└─ 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.635011ms
├─ Worst:     26.830664ms
├─ Completed: 99.466364ms
└─ Errors:    0

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

┌─ Best:      1.713492636s
├─ Worst:     2.270771586s
├─ Completed: 20.235519046s
└─ Errors:    0

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

┌─ Best:      2.639338ms
├─ Worst:     22.945236ms
├─ Completed: 103.822384ms
└─ 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.828472408s
├─ Worst:     8.036261271s
├─ Completed: 1m16.302655384s
└─ 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:      4.247267ms
├─ Worst:     48.019832ms
├─ Completed: 232.840271ms
└─ 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:      8.778988957s
├─ Worst:     10.639894489s
├─ Completed: 1m39.783308913s
└─ 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:      5.234912ms
├─ Worst:     21.433773ms
├─ Completed: 112.335174ms
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      432.51527ms
├─ Worst:     5.157762441s
├─ Completed: 5.163557838s
└─ Errors:    0

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

┌─ Best:      429.519323ms
├─ Worst:     4.191907612s
├─ Completed: 4.19487683s
└─ Errors:    0

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

┌─ Best:      72.949367ms
├─ Worst:     866.487474ms
├─ Completed: 4.860070756s
└─ Errors:    0

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

┌─ Best:      27.79925ms
├─ Worst:     883.629243ms
├─ Completed: 4.373368377s
└─ Errors:    0

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

┌─ Best:      9.492498ms
├─ Worst:     22.305296ms
├─ Completed: 6.362172896s
└─ Errors:    0

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

┌─ Best:      9.467537ms
├─ Worst:     22.109094ms
├─ Completed: 6.505871754s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      2.226054ms
├─ Worst:     39.481239ms
├─ Completed: 99.657363ms
└─ Errors:    0

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

┌─ Best:      1.62089ms
├─ Worst:     13.003039ms
├─ Completed: 60.402965ms
└─ Errors:    0

Deleting records

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

┌─ Best:      3.209699ms
├─ Worst:     35.930337ms
├─ Completed: 160.988254ms
└─ Errors:    0

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

┌─ Best:      2.618856ms
├─ Worst:     42.375576ms
├─ Completed: 164.708075ms
└─ Errors:    0

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

┌─ Best:      2.457535ms
├─ Worst:     48.12197ms
├─ Completed: 146.380004ms
└─ Errors:    0

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

┌─ Best:      3.624942ms
├─ Worst:     51.611071ms
├─ Completed: 156.332064ms
└─ Errors:    0

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

┌─ Best:      2.480575ms
├─ Worst:     41.010287ms
├─ Completed: 151.403153ms
└─ Errors:    0

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

┌─ Best:      2.743376ms
├─ Worst:     47.770647ms
├─ Completed: 152.564559ms
└─ Errors:    0

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

┌─ Best:      3.682503ms
├─ Worst:     52.168594ms
├─ Completed: 191.691274ms
└─ Errors:    0

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

┌─ Best:      3.506181ms
├─ Worst:     42.606056ms
├─ Completed: 160.520646ms
└─ Errors:    0

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

┌─ Best:      703.780188ms
├─ Worst:     24.605671799s
├─ Completed: 1m9.756329623s
└─ Errors:    0

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

┌─ Best:      1.837317405s
├─ Worst:     1m50.294734411s
├─ Completed: 4m19.31889086s
└─ Errors:    0