Гибридный буферный пулHybrid Buffer Pool

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

Гибридный буферный пул позволяет объектам буферного пула ссылаться на страницы данных в файлах базы данных, находящихся на устройствах энергонезависимой памяти (PMEM), а не в копиях страниц данных, кэшированных в непостоянной DRAM.Hybrid Buffer Pool enables buffer pool objects to reference data pages in database files residing on persistent memory (PMEM) devices, instead of copies of the data pages cached in volatile DRAM. Эта функция появилась в SQL Server 2019 (15.x)SQL Server 2019 (15.x).This feature is introduced in SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Гибридный буферный пул

Устройства энергонезависимой памяти (PMEM) поддерживают байтовую адресацию. Если используется файловая система с режимом прямого доступа (DAX), поддерживающая энергонезависимую память (например, XFS, EXT4 или NTFS), доступ к файлам в файловой системе осуществляется с помощью обычных API файловой системы в ОС.Persistent memory (PMEM) devices are byte-addressable and if a direct access (DAX) persistent-memory aware file system (such as XFS, EXT4, or NTFS) is used, files on the file system can be accessed using the usual file system APIs in the OS. Кроме того, он позволяет выполнять так называемые операции загрузки и сохранения в размещенных в памяти файлах на устройстве.Alternatively, it can perform what is known as load and store operations against memory maps of the files on the device. Это позволяет приложениям с поддержкой PMEM, таким как SQL Server, получать доступ к файлам на устройстве в обход традиционного стека хранилища.This allows PMEM aware applications such as SQL Server to access files on the device without traversing the traditional storage stack.

Гибридный буферный пул использует эту возможность для операций загрузки и сохранения с размещенными в памяти файлами, чтобы использовать устройство PMEM как кэш для буферного пула, а также для хранения файлов базы данных.The hybrid buffer pool uses this ability to perform load and store operations against memory mapped files, to leverage the PMEM device as cache for the buffer pool as well as storing database files. Это создает уникальную ситуацию, когда логическая операция чтения и физическое чтение фактически являются одной операцией.This creates the unique situation where both a logical read and a physical read are essentially the same operation. Устройства энергонезависимой памяти доступны через шину памяти так же, как и обычная непостоянная память DRAM.Persistent memory devices are accessible via the memory bus just like regular volatile DRAM.

Только чистые страницы данных кэшируются на устройстве для гибридного буферного пула.Only clean data pages are cached on the device for the Hybrid Buffer Pool. Когда страница помечается как "грязная", она копируется в буферный пул DRAM, а затем записывается обратно на устройство PMEM и снова помечается как "чистая".When a page is marked as dirty, it is copied to the DRAM buffer pool before eventually being written back to the PMEM device and marked as clean again. Это происходит во время обычных операций с контрольной точкой аналогично тому, что делается для блочного устройства.This will occur during regular checkpoint operations in a manner similar to that performed against a standard block device.

Функция гибридного буферного пула доступна в Windows и Linux.The hybrid buffer pool feature is available for both Windows and Linux. PMEM-устройства должны быть отформатированы с использованием файловой системы, поддерживающей DAX (DirectAccess).The PMEM device must be formatted with a filesystem that supports DAX (DirectAccess). DAX поддерживают файловые системы XFS, EXT4 и NTFS.XFS, EXT4, and NTFS file systems all have support for DAX. SQL Server автоматически определит, что файлы данных находятся на соответствующим образом отформатированном PMEM-устройстве, и выполнит сопоставление памяти в файлах базы данных во время запуска при подключении, восстановлении либо создании базы данных.SQL Server will automatically detect if data files reside on an appropriately formatted PMEM device and perform memory mapping of database files upon startup, when a new database is attached, restored, or created.

Дополнительные сведения см. в разделе:For more information, see:

Включение гибридного буферного пулаEnable hybrid buffer pool

SQL Server 2019 (15.x)SQL Server 2019 (15.x) представляет язык DDL для управления гибридным буферным пулом.introduces dynamic data language (DDL) to control hybrid buffer pool.

В следующем примере гибридный буферный пул включается для экземпляра SQL Server:The following example enables hybrid buffer pool for an instance of SQL Server:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

По умолчанию гибридный буферный пул отключен на уровне экземпляра.By default, hybrid buffer pool is disabled at the instance scope. Обратите внимание на то, чтобы изменения параметра вступили в силу, необходимо перезапустить экземпляр SQL Server.Note in order for the setting change to take effect, the SQL Server instance must be restarted. Перезапуск необходим для упрощения выделения достаточного числа хэш-страниц, чтобы учесть общую емкость PMEM на сервере.A restart is needed to facilitate allocating sufficient hash pages, to account for total PMEM capacity on the server.

В следующем примере гибридный буферный пул включается для конкретной базы данных.The following example enables hybrid buffer pool for a specific database.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

По умолчанию гибридный буферный пул включен на уровне базы данных.By default, hybrid buffer pool is enabled at the database scope.

Отключение гибридного буферного пулаDisable hybrid buffer pool

Следующий пример отключает гибридный буферный пул на уровне экземпляра:The following example disables hybrid buffer pool at the instance level:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

По умолчанию гибридный буферный пул отключен на уровне экземпляра.By default, hybrid buffer pool is disabled at the instance level. Чтобы изменения параметра вступили в силу, необходимо перезапустить экземпляр SQL Server.In order for this change to take effect, the instance must be restarted. Это гарантирует, что для буферного пула будет выделено достаточное количество страниц хэша, так как теперь необходимо учитывать емкость PMEM на сервере.This ensures enough hash pages are allocated for the buffer pool, as PMEM capacity on the server now needs to be accounted for.

В следующем примере гибридный буферный пул отключается для конкретной базы данных.The following example disables hybrid buffer pool for a specific database.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

По умолчанию гибридный буферный пул включен на уровне базы данных.By default, hybrid buffer pool is enabled at the database scope.

Просмотр конфигурации гибридного буферного пулаView hybrid buffer pool configuration

Следующий пример возвращает текущее состояние конфигурации гибридного буферного пула для экземпляра.The following example returns the current hybrid buffer pool configuration status of the instance.

SELECT * FROM
sys.server_memory_optimized_hybrid_buffer_pool_configuration;

В примере ниже перечислены базы данных и параметр уровня базы данных для гибридного буферного пула (is_memory_optimized_enabled).The following example lists the databases and the database level setting for hybrid buffer pool (is_memory_optimized_enabled).

SELECT name, is_memory_optimized_enabled FROM sys.databases;

Рекомендации по использованию гибридного буферного пулаBest Practices for hybrid buffer pool

  • При форматировании PMEM-устройства в Windows используйте максимальный размер единицы размещения, доступный для файловой системы NTFS (2 МБ в Windows Server 2019), и отформатируйте устройство для DAX (Direct Access).When formatting your PMEM device on Windows, use the largest allocation unit size available for NTFS (2 MB in Windows Server 2019) and ensure the device has been formatted for DAX (Direct Access).

  • Используйте заблокированные страницы в памяти в Windows.Use Locked Pages in Memory on Windows.

  • Размеры файлов должны быть кратны 2 МБ (деление по модулю на 2 МБ должно давать ноль).Files sizes should be a multiple of 2 MB (modulo 2 MB should equal zero).

  • Если параметр области сервера для гибридного буферного пула отключен, эта функция не будет использоваться какой-либо пользовательской базой данных.If the server scoped setting for hybrid buffer pool is disabled, the feature will not be used by any user database.

  • Если параметр гибридного буферного пула на уровне сервера включен, можно использовать параметр области базы данных, чтобы отключить эту функцию для отдельных пользовательских баз данных.If the server scoped setting for hybrid buffer pool is enabled, you can use the database scoped setting to disable the feature for individual user databases.