Benchmark for Dedicated Tables
The dedicated table benchmarks the optimized setup where module fields get their own dedicated table columns. You can apply standard database optimizations (such as indexing) to better suit your needs. This setup is intended for high volume modules since it can better utilize indexing and reduce the JSON encoding overhead.
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. |
-
A sub-select of columns specified indexes which affects both the CRUD and search operations.
-
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 to define a dedicated column for each module field. The primary reason is consistent repeatability.
-
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 |
|
|
|
|
|
|