Skip to content

Latest commit

 

History

History
1071 lines (1061 loc) · 36.8 KB

hetzner_cax41.md

File metadata and controls

1071 lines (1061 loc) · 36.8 KB

PocketBase v0.24.0-dev

Creating organizations (100)

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

┌─ Best:      1.056295ms
├─ Worst:     10.264747ms
├─ Completed: 18.410065ms
└─ Errors:    0

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

┌─ Best:      831.053µs
├─ Worst:     12.076098ms
├─ Completed: 21.352515ms
└─ Errors:    0

Creating permissions (50)

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

┌─ Best:      834.932µs
├─ Worst:     3.130328ms
├─ Completed: 9.513743ms
└─ Errors:    0

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

┌─ Best:      832.333µs
├─ Worst:     3.498933ms
├─ Completed: 8.47165ms
└─ Errors:    0

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

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

┌─ Best:      240.130526ms
├─ Worst:     737.675628ms
├─ Completed: 2.21201092s
└─ Errors:    0

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

┌─ Best:      230.722352ms
├─ Worst:     731.056115ms
├─ Completed: 2.231795759s
└─ Errors:    0

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

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

┌─ Best:      1.310182ms
├─ Worst:     1.217877559s
├─ Completed: 1.854830308s
└─ Errors:    0

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

┌─ Best:      1.905233ms
├─ Worst:     1.257548893s
├─ Completed: 2.057617674s
└─ Errors:    0

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

┌─ Best:      1.165381ms
├─ Worst:     1.480054056s
├─ Completed: 4.504176848s
└─ Errors:    0

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

┌─ Best:      1.950677ms
├─ Worst:     1.854339187s
├─ Completed: 5.112448647s
└─ Errors:    0

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

┌─ Best:      1.215344ms
├─ Worst:     1.780835136s
├─ Completed: 9.02500141s
└─ Errors:    0

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

┌─ Best:      1.842198ms
├─ Worst:     2.230225744s
├─ Completed: 10.353861812s
└─ Errors:    0

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

┌─ Best:      1.149585ms
├─ Worst:     1.984452656s
├─ Completed: 18.324678401s
└─ Errors:    0

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

┌─ Best:      1.72856ms
├─ Worst:     2.225647762s
├─ Completed: 21.071589018s
└─ 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:      148.249684ms
├─ Worst:     1.114889013s
├─ Completed: 1.118710902s
└─ Errors:    0

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

┌─ Best:      68.608061ms
├─ Worst:     84.930924ms
├─ Completed: 1.790066847s
└─ Errors:    0

User auth refresh

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

┌─ Best:      717.937µs
├─ Worst:     196.634906ms
├─ Completed: 200.523398ms
└─ Errors:    0

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

┌─ Best:      565.054µs
├─ Worst:     151.934694ms
├─ Completed: 153.566053ms
└─ Errors:    0

List records

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

┌─ Best:      16.917044ms
├─ Worst:     212.924557ms
├─ Completed: 214.185107ms
└─ Errors:    0

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

┌─ Best:      705.817µs
├─ Worst:     168.59923ms
├─ Completed: 176.231893ms
└─ Errors:    0

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

┌─ Best:      2.364977ms
├─ Worst:     6.627399ms
├─ Completed: 3.957206425s
└─ Errors:    0

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

┌─ Best:      15.397692ms
├─ Worst:     567.112807ms
├─ Completed: 570.495048ms
└─ Errors:    0

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

┌─ Best:      17.333939ms
├─ Worst:     406.141625ms
├─ Completed: 407.560901ms
└─ 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:      54.137033ms
├─ Worst:     812.726431ms
├─ Completed: 817.150898ms
└─ Errors:    0

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

┌─ Best:      6.047187ms
├─ Worst:     22.770353ms
├─ Completed: 104.993433ms
└─ Errors:    0

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

┌─ Best:      6.16383ms
├─ Worst:     25.279416ms
├─ Completed: 115.910543ms
└─ Errors:    0

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

┌─ Best:      7.514224ms
├─ Worst:     27.663235ms
├─ Completed: 134.85261ms
└─ 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:      7.971835ms
├─ Worst:     28.467616ms
├─ Completed: 148.743715ms
└─ Errors:    0

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

┌─ Best:      2.884191ms
├─ Worst:     17.250183ms
├─ Completed: 61.782794ms
└─ Errors:    0

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

┌─ Best:      50.457279ms
├─ Worst:     267.887371ms
├─ Completed: 876.743587ms
└─ Errors:    0

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

┌─ Best:      1.772203ms
├─ Worst:     90.69331ms
├─ Completed: 117.98418ms
└─ 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.536998ms
├─ Worst:     17.0477ms
├─ Completed: 49.512539ms
└─ Errors:    0

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

┌─ Best:      55.075398ms
├─ Worst:     300.909897ms
├─ Completed: 917.88643ms
└─ 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.63196ms
├─ Worst:     91.642263ms
├─ Completed: 128.256167ms
└─ 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.190909ms
├─ Worst:     17.689278ms
├─ Completed: 43.70488ms
└─ Errors:    0

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

┌─ Best:      21.345288ms
├─ Worst:     147.575813ms
├─ Completed: 555.300911ms
└─ Errors:    0

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

┌─ Best:      29.987704ms
├─ Worst:     196.459072ms
├─ Completed: 574.990058ms
└─ 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.734852ms
├─ Worst:     36.487875ms
├─ Completed: 69.606125ms
└─ Errors:    0

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

┌─ Best:      596.237489ms
├─ Worst:     815.15959ms
├─ Completed: 6.622680533s
└─ Errors:    0

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

┌─ Best:      3.179518ms
├─ Worst:     48.853502ms
├─ Completed: 105.239501ms
└─ Errors:    0

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

┌─ Best:      318.340169ms
├─ Worst:     454.024242ms
├─ Completed: 3.587692652s
└─ 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.867219ms
├─ Worst:     43.463459ms
├─ Completed: 83.221087ms
└─ Errors:    0

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

┌─ Best:      795.665547ms
├─ Worst:     965.494753ms
├─ Completed: 8.619678184s
└─ 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.685625ms
├─ Worst:     44.999619ms
├─ Completed: 89.292682ms
└─ 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.232513643s
├─ Worst:     1.530711528s
├─ Completed: 13.593931761s
└─ 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:      22.191698ms
├─ Worst:     45.56007ms
├─ Completed: 285.599083ms
└─ 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:      812.189975ms
├─ Worst:     994.263605ms
├─ Completed: 8.631934295s
└─ Errors:    0

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

┌─ Best:      3.391913ms
├─ Worst:     36.566882ms
├─ Completed: 92.002043ms
└─ Errors:    0

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

┌─ Best:      3.837996ms
├─ Worst:     11.351701ms
├─ Completed: 6.495604871s
└─ Errors:    0

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

┌─ Best:      43.95347ms
├─ Worst:     864.059174ms
├─ Completed: 867.680333ms
└─ Errors:    0

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

┌─ Best:      16.664564ms
├─ Worst:     426.400352ms
├─ Completed: 427.922792ms
└─ 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:      28.119496ms
├─ Worst:     1.270214714s
├─ Completed: 1.273015795s
└─ Errors:    0

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

┌─ Best:      8.30829ms
├─ Worst:     43.649133ms
├─ Completed: 155.548629ms
└─ Errors:    0

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

┌─ Best:      8.085052ms
├─ Worst:     34.647573ms
├─ Completed: 146.935704ms
└─ Errors:    0

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

┌─ Best:      9.933218ms
├─ Worst:     33.772942ms
├─ Completed: 166.006903ms
└─ 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.980905ms
├─ Worst:     37.429082ms
├─ Completed: 180.842846ms
└─ Errors:    0

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

┌─ Best:      4.321731ms
├─ Worst:     22.735018ms
├─ Completed: 93.75792ms
└─ Errors:    0

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

┌─ Best:      49.103594ms
├─ Worst:     455.782897ms
├─ Completed: 1.690372333s
└─ Errors:    0

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

┌─ Best:      2.753649ms
├─ Worst:     100.690662ms
├─ Completed: 149.463388ms
└─ 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.740607ms
├─ Worst:     20.753836ms
├─ Completed: 55.226483ms
└─ Errors:    0

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

┌─ Best:      67.396804ms
├─ Worst:     214.457847ms
├─ Completed: 1.476443737s
└─ 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.12089ms
├─ Worst:     101.400813ms
├─ Completed: 152.466201ms
└─ 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.690928ms
├─ Worst:     18.593648ms
├─ Completed: 52.91953ms
└─ Errors:    0

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

┌─ Best:      55.522203ms
├─ Worst:     150.380509ms
├─ Completed: 1.024746977s
└─ Errors:    0

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

┌─ Best:      69.619261ms
├─ Worst:     178.288282ms
├─ Completed: 1.077142079s
└─ 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.74573ms
├─ Worst:     45.359384ms
├─ Completed: 73.369708ms
└─ Errors:    0

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

┌─ Best:      1.758725032s
├─ Worst:     1.970804082s
├─ Completed: 18.761667557s
└─ 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.534469ms
├─ Worst:     42.05223ms
├─ Completed: 98.016736ms
└─ Errors:    0

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

┌─ Best:      845.160185ms
├─ Worst:     1.006985436s
├─ Completed: 9.292485417s
└─ 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.931219ms
├─ Worst:     116.706874ms
├─ Completed: 159.632364ms
└─ Errors:    0

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

┌─ Best:      2.082265689s
├─ Worst:     2.515849785s
├─ Completed: 22.388930989s
└─ Errors:    0

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

┌─ Best:      2.370508ms
├─ Worst:     118.969315ms
├─ Completed: 168.216532ms
└─ Errors:    0

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

┌─ Best:      3.405681116s
├─ Worst:     4.035267951s
├─ Completed: 36.148252669s
└─ Errors:    0

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

┌─ Best:      20.775696ms
├─ Worst:     68.408893ms
├─ Completed: 295.698733ms
└─ Errors:    0

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

┌─ Best:      2.154125796s
├─ Worst:     2.610453908s
├─ Completed: 22.727414897s
└─ 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:      4.46235ms
├─ Worst:     117.324662ms
├─ Completed: 179.532788ms
└─ Errors:    0

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

┌─ Best:      6.173458ms
├─ Worst:     15.682205ms
├─ Completed: 9.104054549s
└─ Errors:    0

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

┌─ Best:      80.99918ms
├─ Worst:     1.468205529s
├─ Completed: 1.475017439s
└─ Errors:    0

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

┌─ Best:      66.329594ms
├─ Worst:     481.462202ms
├─ Completed: 484.50145ms
└─ 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:      82.478982ms
├─ Worst:     2.137329685s
├─ Completed: 2.141023625s
└─ Errors:    0

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

┌─ Best:      13.232338ms
├─ Worst:     47.53482ms
├─ Completed: 205.955946ms
└─ Errors:    0

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

┌─ Best:      11.257626ms
├─ Worst:     38.134511ms
├─ Completed: 191.79769ms
└─ Errors:    0

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

┌─ Best:      14.634323ms
├─ Worst:     45.069868ms
├─ Completed: 230.042498ms
└─ 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:      16.033828ms
├─ Worst:     44.693504ms
├─ Completed: 240.795412ms
└─ Errors:    0

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

┌─ Best:      9.283355ms
├─ Worst:     30.544872ms
├─ Completed: 144.325339ms
└─ Errors:    0

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

┌─ Best:      124.827512ms
├─ Worst:     427.376995ms
├─ Completed: 2.848334397s
└─ Errors:    0

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

┌─ Best:      3.841985ms
├─ Worst:     50.516018ms
├─ Completed: 123.657981ms
└─ 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.629907ms
├─ Worst:     20.947357ms
├─ Completed: 60.220227ms
└─ Errors:    0

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

┌─ Best:      152.211578ms
├─ Worst:     400.462543ms
├─ Completed: 2.652404177s
└─ Errors:    0

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

┌─ Best:      3.4895ms
├─ Worst:     55.676961ms
├─ Completed: 122.400752ms
└─ 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.535187ms
├─ Worst:     20.162309ms
├─ Completed: 56.832264ms
└─ Errors:    0

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

┌─ Best:      188.796335ms
├─ Worst:     293.497906ms
├─ Completed: 2.272767054s
└─ Errors:    0

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

┌─ Best:      169.106369ms
├─ Worst:     283.767375ms
├─ Completed: 2.297397857s
└─ 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.597828ms
├─ Worst:     45.898809ms
├─ Completed: 76.024021ms
└─ Errors:    0

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

┌─ Best:      3.819833899s
├─ Worst:     4.083851987s
├─ Completed: 39.404352011s
└─ 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:      3.641668ms
├─ Worst:     162.497903ms
├─ Completed: 217.430004ms
└─ Errors:    0

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

┌─ Best:      1.916368697s
├─ Worst:     2.292879695s
├─ Completed: 20.428959751s
└─ 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.748873ms
├─ Worst:     163.59467ms
├─ Completed: 208.244279ms
└─ Errors:    0

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

┌─ Best:      4.372348337s
├─ Worst:     5.102901719s
├─ Completed: 47.602853478s
└─ 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.098941ms
├─ Worst:     160.651438ms
├─ Completed: 207.417957ms
└─ 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.367509041s
├─ Worst:     8.248553984s
├─ Completed: 1m17.584956124s
└─ 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:      20.685354ms
├─ Worst:     185.060192ms
├─ Completed: 407.096269ms
└─ Errors:    0

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

┌─ Best:      4.72959143s
├─ Worst:     5.41082706s
├─ Completed: 49.716461901s
└─ Errors:    0

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

┌─ Best:      3.912262ms
├─ Worst:     165.838101ms
├─ Completed: 222.810113ms
└─ Errors:    0

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

┌─ Best:      10.591758ms
├─ Worst:     26.961903ms
├─ Completed: 13.908951074s
└─ Errors:    0

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

┌─ Best:      72.661728ms
├─ Worst:     2.56292031s
├─ Completed: 2.56600994s
└─ Errors:    0

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

┌─ Best:      9.325374ms
├─ Worst:     540.994492ms
├─ Completed: 542.688887ms
└─ 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:      101.325534ms
├─ Worst:     3.56455678s
├─ Completed: 3.569112728s
└─ Errors:    0

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

┌─ Best:      21.943992ms
├─ Worst:     105.918771ms
├─ Completed: 353.917594ms
└─ 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.566475ms
├─ Worst:     52.515334ms
├─ Completed: 319.406967ms
└─ Errors:    0

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

┌─ Best:      24.518397ms
├─ Worst:     58.791095ms
├─ Completed: 335.648122ms
└─ 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:      25.260639ms
├─ Worst:     57.155507ms
├─ Completed: 335.767612ms
└─ Errors:    0

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

┌─ Best:      16.319977ms
├─ Worst:     46.972494ms
├─ Completed: 254.903961ms
└─ Errors:    0

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

┌─ Best:      375.08976ms
├─ Worst:     694.52556ms
├─ Completed: 4.740841017s
└─ Errors:    0

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

┌─ Best:      4.825837ms
├─ Worst:     45.169126ms
├─ Completed: 137.833936ms
└─ 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.529319ms
├─ Worst:     21.006067ms
├─ Completed: 58.591844ms
└─ Errors:    0

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

┌─ Best:      332.735959ms
├─ Worst:     546.079138ms
├─ Completed: 4.666051438s
└─ Errors:    0

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

┌─ Best:      4.95308ms
├─ Worst:     43.198921ms
├─ Completed: 139.474922ms
└─ 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.51748ms
├─ Worst:     20.680485ms
├─ Completed: 60.236574ms
└─ Errors:    0

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

┌─ Best:      382.450692ms
├─ Worst:     476.285429ms
├─ Completed: 4.22214151s
└─ Errors:    0

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

┌─ Best:      380.413116ms
├─ Worst:     791.783183ms
├─ Completed: 5.600657886s
└─ 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.768282ms
├─ Worst:     32.715326ms
├─ Completed: 65.327171ms
└─ Errors:    0

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

┌─ Best:      8.203030313s
├─ Worst:     8.559870151s
├─ Completed: 1m23.887777043s
└─ Errors:    0

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

┌─ Best:      3.26666ms
├─ Worst:     169.952554ms
├─ Completed: 230.841165ms
└─ Errors:    0

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

┌─ Best:      4.151725993s
├─ Worst:     4.58056054s
├─ Completed: 43.770482933s
└─ 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.728134ms
├─ Worst:     155.52229ms
├─ Completed: 199.282602ms
└─ Errors:    0

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

┌─ Best:      9.444230238s
├─ Worst:     9.985374544s
├─ Completed: 1m38.039359631s
└─ 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.479707ms
├─ Worst:     159.046253ms
├─ Completed: 206.003458ms
└─ Errors:    0

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

┌─ Best:      15.847155918s
├─ Worst:     16.678973725s
├─ Completed: 2m41.841183132s
└─ 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:      22.623841ms
├─ Worst:     193.04114ms
├─ Completed: 482.676011ms
└─ 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:      10.181124049s
├─ Worst:     11.020085163s
├─ Completed: 1m45.383751597s
└─ Errors:    0

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

┌─ Best:      4.396068ms
├─ Worst:     163.789994ms
├─ Completed: 225.808506ms
└─ Errors:    0

Go vs JS route execution

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

┌─ Best:      3.445223823s
├─ Worst:     11.236817965s
├─ Completed: 11.245982226s
└─ Errors:    0

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

┌─ Best:      1.769651792s
├─ Worst:     9.689959449s
├─ Completed: 9.69325338s
└─ Errors:    0

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

┌─ Best:      741.70139ms
├─ Worst:     1.084552723s
├─ Completed: 9.042732712s
└─ Errors:    0

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

┌─ Best:      764.481007ms
├─ Worst:     1.085992594s
├─ Completed: 9.127687773s
└─ Errors:    0

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

┌─ Best:      16.913346ms
├─ Worst:     41.273889ms
├─ Completed: 10.107236106s
└─ Errors:    0

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

┌─ Best:      16.790226ms
├─ Worst:     43.03436ms
├─ Completed: 9.926664493s
└─ Errors:    0

Go vs JS hooks execution

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

┌─ Best:      2.141914ms
├─ Worst:     40.29844ms
├─ Completed: 72.099505ms
└─ Errors:    0

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

┌─ Best:      1.87511ms
├─ Worst:     16.513062ms
├─ Completed: 50.004835ms
└─ Errors:    0

Deleting records

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

┌─ Best:      1.032976ms
├─ Worst:     17.064591ms
├─ Completed: 37.017349ms
└─ Errors:    0

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

┌─ Best:      1.114577ms
├─ Worst:     25.339603ms
├─ Completed: 51.553821ms
└─ Errors:    0

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

┌─ Best:      1.086537ms
├─ Worst:     9.046544ms
├─ Completed: 33.429413ms
└─ Errors:    0

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

┌─ Best:      1.175779ms
├─ Worst:     6.700307ms
├─ Completed: 29.695634ms
└─ Errors:    0

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

┌─ Best:      1.135898ms
├─ Worst:     10.976175ms
├─ Completed: 37.102712ms
└─ Errors:    0

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

┌─ Best:      1.079377ms
├─ Worst:     11.183298ms
├─ Completed: 29.899278ms
└─ Errors:    0

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

┌─ Best:      1.093097ms
├─ Worst:     45.962495ms
├─ Completed: 69.561312ms
└─ Errors:    0

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

┌─ Best:      1.305381ms
├─ Worst:     8.513296ms
├─ Completed: 35.514449ms
└─ Errors:    0

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

┌─ Best:      123.594698ms
├─ Worst:     5.039077141s
├─ Completed: 13.779887296s
└─ Errors:    0

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

┌─ Best:      157.199636ms
├─ Worst:     16.603734494s
├─ Completed: 33.79593302s
└─ Errors:    0