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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Гибридный буферный пул предоставляет ядру СУБД прямой доступ к страницам данных в файлах базы данных, хранимых на устройствах с постоянной памятью (PMEM).Hybrid Buffer Pool allows the database engine to directly access data pages in database files stored on persistent memory (PMEM) devices. Эта функция появилась в SQL Server 2019SQL Server 2019.This feature is introduced in SQL Server 2019SQL Server 2019.

В традиционной системе без постоянной памяти SQL Server кэширует страницы данных в буферном пуле.In a traditional system without PMEM, SQL Server caches data pages in the buffer pool. Благодаря гибридному буферному пулу SQL Server пропускает копирование страницы в часть буферного пула на основе DRAM и вместо этого обращается к странице напрямую в файле базы данных, хранящемся на PMEM-устройстве.With hybrid buffer pool, SQL Server skips performing a copy of the page into the DRAM-based portion of the buffer pool, and instead accesses the page directly on the database file that lives on a PMEM device. Доступ на чтение к файлам данных на устройствах PMEM для гибридного буферного пула выполняется непосредственно путем следования за указателем на страницы данных на устройстве PMEM.Read access to data files on PMEM devices for hybrid buffer pool is performed directly by following a pointer to the data pages on the PMEM device.

На PMEM-устройстве напрямую можно обратиться только к "чистым" страницам.Only clean pages can be accessed directly on a PMEM device. Когда страница помечается как "грязная", она копируется в буферный пул 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. Механизм копирования файла с устройства PMEM в память DRAM представляет собой прямое сопоставление ввода-вывода в памяти (MMIO) и также называется паравиртуализацией файлов данных в пределах SQL Server.The mechanism to copy the file from the PMEM device to DRAM is direct memory-mapped I/O (MMIO) and is also referred to as the enlightenment of data files within SQL Server.

Функция гибридного буферного пула доступна в 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.The 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 in user space. Такое сопоставление выполняется при запуске, при присоединении, восстановлении, создании новой базы данных или когда для базы данных включается гибридный буферный пул.This mapping happens upon startup, when a new database is attached, restored, created, or when the hybrid buffer pool feature is enabled for a database.

Дополнительные сведения о поддержке PMEM в Windows Server см. в описании развертывания постоянной памяти в Windows Server.For more on Windows Server support for PMEM, see deploy persistent memory on Windows Server.

Дополнительные сведения о настройке SQL Server в Linux для PMEM-устройств см. в описании развертывания постоянной памяти.For more on configuring SQL Servers on Linux for PMEM devices, see deploy persistent memory.

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

SQL Server 2019SQL Server 2019 представляет язык 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 set to disable 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 set to enable at the database scope.

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

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

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

По умолчанию гибридный буферный пул отключается на уровне экземпляра.By default, hybrid buffer pool is set to disable 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 prevent over allocation of hash pages, as PMEM capacity on the server does not need 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 set to enable at the database scope.

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

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

SELECT *
FROM sys.configurations
WHERE
    name = 'hybrid_buffer_pool';

В следующем примере возвращаются две таблицы:The following example returns two tables:

  • Первая показывает текущее состояние конфигурации системы гибридного буферного пула для экземпляра SQL Server.The first shows the current status of hybrid buffer pool system configuration for an instance of SQL Server.
  • Во второй перечислены базы данных и параметр уровня базы данных для гибридного буферного пула (is_memory_optimized_enabled).The second lists the databases and the database level setting for hybrid buffer pool (is_memory_optimized_enabled).
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';

SELECT name, is_memory_optimized_enabled FROM sys.databases;

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

Не рекомендуется включать гибридный буферный пул в экземплярах менее чем с 16 ГБ ОЗУ.It is not recommended to enable hybrid buffer pool on instances with less than 16-GB RAM.

При форматировании 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).

Размеры файлов должны быть кратны 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 set to disabled, Hybrid buffer pool will not be used by any user database.

Если параметр области сервера для гибридного буфера включен, вы можете отключить использование гибридного буферного пула для отдельных пользовательских баз данных, выполнив для них действия по отключению гибридного буферного пула на уровне области базы данных.If the server scoped setting for Hybrid Buffer is enabled, you can disable Hybrid buffer pool usage for individual user databases by following the steps to disable Hybrid buffer pool at the database scoped level for those user databases.