Skip to content

Reduce the Server Load of Summary Synchronization

Overview

When you run "Summary synchronization" on a table that contains a large number of records, the database may be under a high load and the process may take a long time. This feature divides the summary synchronization process into chunks of a fixed number of records and adds a wait time after each chunk, which keeps the load on the database down.

Configure it in the SummarySync.json parameter file. By default there is no wait (SynchronizeSummariesDelayMilliseconds is 0), so the behavior of existing environments does not change.

Cautions

  1. The larger the wait time (SynchronizeSummariesDelayMilliseconds), the longer it takes to complete the whole synchronization process, and the higher the risk of an HTTP timeout. Check that the setting is consistent with the timeout settings of the reverse proxy and load balancer.
  2. To apply changes to the parameter file, you need to restart the application.

Limitations

  1. This setting applies only to the summary synchronization process. It does not apply to other processes such as file import, bulk delete, and bulk update.
  2. The best setting values depend on the performance and load of the server. The setting examples below are only a guide.

Relationship with the Function That Suppresses Concurrent Execution of Bulk Operations on Large Amounts of Data

If you configure this feature with the function that suppresses concurrent execution of bulk operations on large amounts of data enabled, the time until summary synchronization finishes (the lock time) is extended automatically.

Operation Procedure

Setting Example 1: Enable Chunking Only (No Wait)

When the function that suppresses concurrent execution is enabled, setting SynchronizeSummariesDelayChunkSize extends the lock time automatically until the summary synchronization process finishes.

{
    "SynchronizeSummariesDelayMilliseconds": 0,
    "SynchronizeSummariesDelayChunkSize": 100
}

The lock time is extended every 100 records, and the lock is held until the summary synchronization process finishes.

Setting Example 2: Light Load Reduction

Use this setting to reduce the database load while keeping the increase in processing time to a minimum.

{
    "SynchronizeSummariesDelayMilliseconds": 50,
    "SynchronizeSummariesDelayChunkSize": 100
}

A wait of 50 milliseconds is inserted every 100 records. Processing 10,000 records takes about 5 seconds longer.

Setting Example 3: Moderate Load Reduction

Use this setting to reduce the database load moderately.

{
    "SynchronizeSummariesDelayMilliseconds": 200,
    "SynchronizeSummariesDelayChunkSize": 100
}

A wait of 200 milliseconds is inserted every 100 records. Processing 10,000 records takes about 20 seconds longer.

Setting Example 4: Strong Load Reduction

Use this setting to reduce the database load as much as possible.
Be aware of the risk of an HTTP timeout.

{
    "SynchronizeSummariesDelayMilliseconds": 500,
    "SynchronizeSummariesDelayChunkSize": 50
}

A wait of 500 milliseconds is inserted every 50 records. Processing 10,000 records takes about 100 seconds longer.

The following is only a guide. Adjust the values according to the actual performance and load of your server.

Number of records SynchronizeSummariesDelayChunkSize SynchronizeSummariesDelayMilliseconds
Fewer than 1,000 100 0
10,000 to 100,000 500 1000
More than 100,000 1000 2000

Supported Versions

Supported versions Body
1.5.5.0 and later Added the feature