Information
Summary
Basically, once you have 50.000 requirements in the database, expect 20ms per requirement on the page when you save a page, and 20ms per requirement on view.
Performance improvements in v1.11.5
- For pages with no requirements, we've improved the speed by skipping our indexation:
- We skip the parsing if the storage format hasn't changed,
- We skip the parsing if the rendered format hasn't changed, in case it contains an "Include" or "Scaffolding" macro.
- We skip the parsing if there is no requirement in the old or new version.
- For pages with requirements:
- We've added indexes on database columns. On our instance we get 5x faster results when saving a page, but we may be in special circumstances.
- When we index a page (=when a user saves a page), we've batched the lookups of requirements, so we don't do 1 database request for each requirement on the page. On our instance, we get again 4x faster times depending on database latency (most LANs are on 1ms latency, but we've measured with 5ms).
- We'd be thrilled if you have 20x better response times than in 1.11.4, but we'll check back with customers before asserting that.
For users with Confluence 6.0.2 or 5.10
Indexes on database columns were not available for add-ons in those versions. The best is to upgrade to Confluence 6.0.3 or above, and you will get indexes automatically, which greatly improve databsae performance. Alternatively, you (or your DBA) can create indexes manually:
- AORequirement.SPACEKEY and REQKEY (the index spans on those 2 columns)
- AODependency.SPACEKEY and KEY and BASELINE (the index spans on those 3 columns).
- AOIntegrationQueue.SERVICEID
- AOIntegrationQueue.STATUS
Details
We have evaluated on a personal machine with the following setup:
- Macbook 2013
- 2,4 GHz Intel Core i7-3635QM (3rd generation–2013, not the 8th generation from 2017),
- RAM 8GB.
- Database latency: 5 to 10ms (random) per query.
- Database prefilled with 80.000 requirements.
We have simply instrumented the code and created massive pages:
Event | Time (in addition to Confluence's algorithm). For ~400 requirements, 1Kb each in average. No Jira connection. | Time Same, with 1ms database latency. | Time 1ms latency, 200-char requirements | Time 1ms latency, 1000 requirements. |
---|---|---|---|---|
Page creation |
|
| — |
|
Page edition |
For 0 requirement and 480kb of raw text:
|
|
|
|
Submission of excerpts (This operation is in the background, the user doesn't wait for this). |
|
|
|
|