Excessive load on the core database after application restart


Description

Initial prefetch configuration (located in the \App_Config\Prefetch folder) allows to pre-populate prefetch caches on the application start. Pre-heated prefetch caches help to reduce the processing time of incoming requests.

In Sitecore XP 9.0 the initial prefetch configuration was revised. The prefetch cache for the core database was configured to include items that are used to render the Sitecore Client interface.

The Sitecore Client interface is not used on Content Delivery instances. Disabling initial prefetch configuration for the Core database helps in avoiding excessive resource consumption on the SQL Server hosting the Core database.

Solution

Change the configuration of the Core database in the \App_Config\Sitecore.config file:

<database id="core" singleInstance="true" type="Sitecore.Data.DefaultDatabase, Sitecore.Kernel">
  <param desc="name">$(id)</param>
  <connectionStringName>$(id)</connectionStringName>
  <icon>Images/database_core.png</icon>
  <dataProviders hint="list:AddDataProvider">
    <dataProvider ref="dataProviders/main" param1="$(id)">
      <prefetch role:require="ContentManagement or Standalone" hint="raw:AddPrefetch">
        <sc.include file="/App_Config/Prefetch/Common.config" />
        <sc.include file="/App_Config/Prefetch/Core.config" />
      </prefetch>
    </dataProvider>
  </dataProviders>
  ...
</database>