Benchmark for Shared Tables
The shared table benchmarks the default out-of-the-box setup where all of the modules utilize the same database table with all of the values JSON encoded into a single column. This setup is intended for generic and low volume modules since it’s easier to setup and requires less maintenance.
This document should be used as a base to figure out what setup would work best for you. You can use the raw numbers of different scenarios to deduct your own conclusions on how well a specific setup would pan out for your use case. |
-
All times are in MS with networking overhead excluded (the scripts were ran directly on the host server).
-
Each scenario used a dedicated DB table which was configured as the standard
compose_records
one. The primary reason is consistent repeatability. Namespace and module identifiers are indexed so the overhead is negligible. -
Records were created from a pre-defined dataset with randomly generated data using faker.js.
-
Benchmarks were ran on a dedicated cloud instance with minimal background processes.
-
The tests use Postgres as the database.
-
We observed some random spikes under the max time which we couldn’t quite explain. Our guess would indicate some background system task or potential throttling. Ideally, in future tests, such anomalies would be excluded or better handled.
-
Increase the amount of data points to better indicate the trend.
-
Include some projections to indicate how it would behave on larger datasets.
-
Provide memory profiling to indicate consumption and better suggest recommended system specs.
CRUD Operation: Create
The scenario benchmarks insertion times into an already existing module with N pre-created records (where N is the record count in the following tables).
This benchmark inserts a single record into the module with N records pre-created before the scenario. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
CRUD Operation: Lookup
The scenario benchmarks lookup times into an already existing module with N pre-created records (where N is the record count in the following tables).
This benchmark looks up a single record from the module with N records pre-created before the scenario. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
CRUD Operation: Update
The scenario benchmarks update times into an already existing module with N pre-created records (where N is the record count in the following tables).
This benchmark updates a single record from the module with N records pre-created before the scenario. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
CRUD Operation: Delete
The scenario benchmarks delete times into an already existing module with N pre-created records (where N is the record count in the following tables).
This benchmark deletes a single record from the module with N records pre-created before the scenario. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
Filtering Records: Searching
The scenario benchmarks fetching the first page of records when providing a filter. The page size is 20 records.
The scenario excludes both the total record count and the complete paging navigation. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
Filtering and Sorting Records: Searching
The scenario benchmarks fetching the first page of records when providing a filter and a sort. The page size is 20 records.
The scenario excludes both the total record count and the complete paging navigation. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
Listing Records: Searching
The scenario benchmarks fetching the first page of records without any other sorting/filtering parameters. The page size is 20 records.
The scenario excludes both the total record count and the complete paging navigation. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|
Sorting Records: Searching
The scenario benchmarks fetching the first page of records when providing a sort. The page size is 20 records.
The scenario excludes both the total record count and the complete paging navigation. |
Number of Fields 1
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
1 |
100000 |
|
|
|
|
|
|
1 |
200000 |
|
|
|
|
|
|
1 |
300000 |
|
|
|
|
|
|
1 |
400000 |
|
|
|
|
|
|
1 |
500000 |
|
|
|
|
|
|
1 |
600000 |
|
|
|
|
|
|
1 |
700000 |
|
|
|
|
|
|
1 |
800000 |
|
|
|
|
|
|
1 |
900000 |
|
|
|
|
|
|
1 |
1000000 |
|
|
|
|
|
|
Number of Fields 10
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
10 |
100000 |
|
|
|
|
|
|
10 |
200000 |
|
|
|
|
|
|
10 |
300000 |
|
|
|
|
|
|
10 |
400000 |
|
|
|
|
|
|
10 |
500000 |
|
|
|
|
|
|
10 |
600000 |
|
|
|
|
|
|
10 |
700000 |
|
|
|
|
|
|
10 |
800000 |
|
|
|
|
|
|
10 |
900000 |
|
|
|
|
|
|
10 |
1000000 |
|
|
|
|
|
|
Number of Fields 50
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
50 |
100000 |
|
|
|
|
|
|
50 |
200000 |
|
|
|
|
|
|
50 |
300000 |
|
|
|
|
|
|
50 |
400000 |
|
|
|
|
|
|
50 |
500000 |
|
|
|
|
|
|
50 |
600000 |
|
|
|
|
|
|
50 |
700000 |
|
|
|
|
|
|
50 |
800000 |
|
|
|
|
|
|
50 |
900000 |
|
|
|
|
|
|
50 |
1000000 |
|
|
|
|
|
|
Number of Fields 100
Field Count | Pre-Created Record Count | Min | Max | Avg | Min Delta | Max Delta | Avg Delta |
---|---|---|---|---|---|---|---|
100 |
100000 |
|
|
|
|
|
|
100 |
200000 |
|
|
|
|
|
|
100 |
300000 |
|
|
|
|
|
|
100 |
400000 |
|
|
|
|
|
|
100 |
500000 |
|
|
|
|
|
|
100 |
600000 |
|
|
|
|
|
|
100 |
700000 |
|
|
|
|
|
|
100 |
800000 |
|
|
|
|
|
|
100 |
900000 |
|
|
|
|
|
|
100 |
1000000 |
|
|
|
|
|
|