The FHIR Performance configuration category includes the following configurable options:
Default Total Calculation Mode
Delete Enabled
Expire Search Results After Minutes
Expunge Batch Size
Expunge Thread Count
Optimize index storage
Internal Synchronous Search Size
Mass Ingestion Mode
Match URL Cache Enabled
Maximum Transaction Bundle Size
Only Allow IN-MEMORY Subscriptions
Reindex Thread Count
Reuse Cached Results Timeout (Millis)
Index Missing Search Params
Keep history for MDM links and other non-FHIR-resource DB history.
Suppress Scheduled Maintenance Jobs
Write-Semaphore Mode: Enabled
Write-Semaphore Mode: Log Waits
|
Default Total Calculation Mode |
|
|
ENUM | |
Values |
|
This setting may be used to force the calculation of the total number of results when large searches are performed. This setting can have an impact on performance, since calculating the total can mean an extra (potentially expensive) database query. | |
|
|
(no default) | |
|
|
Delete Enabled |
|
|
BOOLEAN | |
If set to false, deletes will not be supported on this server. This should be disabled if the server does not need to support any resource deletion, as it improves performance by reducing the number of deletion checks performed during write operations. | |
|
|
true
|
|
|
|
Expire Search Results After Minutes |
|
|
POSITIVE_INTEGER | |
The number of minutes that search results for a given client search should be preserved before being purged from the database. See Caching Results for more information. | |
|
|
60
|
|
|
|
Expunge Batch Size |
|
|
NON_NEGATIVE_INTEGER | |
The expunge batch size determines the number of records deleted within a single transaction by the expunge operation. | |
|
|
800
|
|
|
|
Expunge Thread Count |
|
|
NON_NEGATIVE_INTEGER | |
This setting controls the number of threads allocated to the expunge operation | |
|
|
2
|
|
|
|
Optimize index storage |
|
|
BOOLEAN | |
If this is enabled, HFJ_SPIDX_* tables will not store data in the SP_NAME , RES_TYPE , and SP_UPDATED columns.
|
|
|
|
false
|
|
|
|
Internal Synchronous Search Size |
|
|
POSITIVE_INTEGER | |
The internal synchronous search size determines the maximum size that the DAO will use for internal searches. Increasing this may impact performance. This setting is used during operations such as delete with expunge, and certain CodeSystem searches. | |
|
|
10000
|
|
|
|
Mass Ingestion Mode |
|
|
BOOLEAN | |
If this is enabled, the server will be placed in Mass Ingestion Mode. In this mode, the server is tuned specifically for loading of data. This means that caches are increased and certain runtime checks are disabled (only checks that are not useful for purely write-oriented workloads are disabled). | |
|
|
false
|
|
|
|
Match URL Cache Enabled |
|
|
BOOLEAN | |
When this setting is enabled, an in-memory cache stores the resolution results for conditional URLs in REST conditional operations (e.g. conditional create, conditional update, inline match URLs, etc.). In scenarios where conditional operations are heavily used and the targets will not change (e.g. during back-loading of data) this setting can improve performance by reducing reads during write operations. Note that the cache does not invalidate automatically, so this setting should not be used if conditional URL targets are expected to change. | |
|
|
false
|
|
|
|
Maximum Transaction Bundle Size |
|
|
POSITIVE_INTEGER | |
Specifies the maximum number of resources permitted within a single transaction bundle. If a transaction bundle is submitted with more than this number of resources, it will be rejected with a PayloadTooLarge exception. If blank, there is no limit. | |
|
|
(no default) | |
|
|
Only Allow IN-MEMORY Subscriptions |
|
|
BOOLEAN | |
If this is enabled, Smile CDR will not allow you to create new Subscriptions unless they can be evaluated IN-MEMORY. | |
|
|
false
|
|
|
|
Reindex Thread Count |
|
|
NON_NEGATIVE_INTEGER | |
This setting controls the number of threads allocated to resource reindexing (which is only ever used if SearchParameters change, or a manual reindex is triggered due to a Smile CDR upgrade or some other reason). | |
|
|
2
|
|
|
|
Reuse Cached Results Timeout (Millis) |
|
|
NON_NEGATIVE_INTEGER | |
If set, any searches repeated during this period for the exact same criteria will reuse the same search results instead of performing a new search. Set this value to 0 to disable the query cache entirely or set to a positive number of milliseconds to specify a specific timeout. See The Query Cache for more information.
|
|
|
|
60000
|
|
|
|
Index Missing Search Params |
|
|
ENUM | |
Values |
|
If disabled, the FHIR endpoint will not support :missing modifiers on searches. Disabling this feature causes fewer index rows to be generated in the database when persisting resources. Note that enabling this feature can negatively impact write performance, particularly on systems with a large number of search parameters enabled.
|
|
|
|
DISABLED
|
|
|
|
Keep history for MDM links and other non-FHIR-resource DB history. |
|
|
BOOLEAN | |
If enabled, DB history will be activated for eligible non-resource tables, such as MdmLink. | |
|
|
true
|
|
|
|
Suppress Scheduled Maintenance Jobs |
|
|
BOOLEAN | |
If this is enabled, no clustered scheduled tasks will be invoked by this module. This setting is only useful in cases where multiple FHIR Storage modules are pointed at the same database, in order to ensure that only one of them performs clustered scheduled jobs. | |
|
|
false
|
|
|
|
Write-Semaphore Mode: Enabled |
|
|
BOOLEAN | |
When enabled, the system will attempt to prevent multiple FHIR transactions from writing to the same resource at the same time by using a local semaphore. This can improve performance when loading data in a highly concurrent environment if it is not possible to avoid concurrent writes to the same resources. When enabling this setting, it is a good idea to compare performance before and after enabling. | |
|
|
false
|
|
|
|
Write-Semaphore Mode: Log Waits |
|
|
BOOLEAN | |
When operating in Write-Semaphore mode, write a log message any time a writing thread blocks waiting for a semaphore. This can be useful when trying to diagnose where contention exists in loading processes. | |
|
|
false
|
|
|