Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Гибридный пул буферов позволяет объектам буферного пула ссылаться на страницы данных в файлах базы данных, находящихся на устройствах с постоянной памятью (PMEM), а не получать копии страниц данных с диска и кэширование их в переменной DRAM. Эта функция появилась в SQL Server 2019 (15.x) и более расширена в SQL Server 2022 (16.x).
Устройства энергонезависимой памяти (PMEM) поддерживают байтовую адресацию. Если используется файловая система с режимом прямого доступа (DAX), поддерживающая энергонезависимую память (например, XFS, EXT4 или NTFS), доступ к файлам в файловой системе осуществляется с помощью обычных API файловой системы в ОС. Кроме того, SQL Server может выполнять операции загрузки и хранения данных для карт памяти файлов на устройстве PMEM. Это позволяет приложениям с поддержкой PMEM, таким как SQL Server, получать доступ к файлам на устройстве без обхода традиционного стека хранилища.
Гибридный пул буферов использует эту возможность для выполнения операций загрузки и хранения сопоставленных файлов с памятью, чтобы использовать устройство PMEM как в качестве кэша для буферного пула, так и расположения хранилища для файлов базы данных. Это создает уникальную ситуацию, когда как логическое чтение, так и физическое чтение становятся по сути одной и той же операцией. Устройства энергонезависимой памяти доступны через шину памяти так же, как и обычная непостоянная память DRAM.
По умолчанию только чистые страницы данных кэшируются в модуле PMEM для гибридного буферного пула. Чтобы страница была изменена и помечена как грязная, она должна быть скопирована из устройства PMEM в буферный пул DRAM, изменена, а затем в конечном итоге копия измененной страницы записывается из DRAM обратно в модуль PMEM, в котором она может быть помечена как чистая снова. Этот процесс происходит с помощью обычных фоновых операций, таких как контрольная точка или отложенный модуль записи, как будто модуль PMEM был стандартным блоковым устройством.
Функция гибридного буферного пула доступна в Windows и Linux. Устройство PMEM должно использовать файловую систему, поддерживающую DAX (DirectAccess). Все файловые системы XFS, EXT4 и NTFS поддерживают расширения DAX, предоставляющие доступ к файловой системе непосредственно из пользовательского пространства. SQL Server обнаружит, находятся ли файлы данных базы данных на соответствующем устройстве диска PMEM и автоматически выполняют необходимое сопоставление памяти файлов базы данных при запуске базы данных или при подключении, восстановлении или создании базы данных.
Дополнительные сведения см. в разделе:
- Настройте постоянную память (PMEM) для SQL Server в Windows (SQL Server 2022 (16.x) и более поздних версиях.
- Настройте постоянную память (PMEM) для SQL Server на Linux.
Включение гибридного буферного пула
SQL Server 2019 (15.x) представляет динамический язык данных (DDL) для управления гибридным буферным пулом.
В следующем примере гибридный буферный пул включается для экземпляра SQL Server:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
По умолчанию гибридный буферный пул отключен на уровне экземпляра. Чтобы изменение параметра вступило в силу, необходимо перезапустить экземпляр SQL Server. Перезагрузка необходима для упрощения выделения достаточных хэш-страниц, чтобы учитывать общую емкость PMEM на сервере.
В следующем примере гибридный буферный пул включается для конкретной базы данных.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
По умолчанию гибридный буферный пул включен на уровне базы данных.
Отключение гибридного буферного пула
Следующий пример отключает гибридный буферный пул на уровне экземпляра:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
По умолчанию гибридный буферный пул отключен на уровне экземпляра. Чтобы изменения параметра вступили в силу, необходимо перезапустить экземпляр SQL Server. Перезапуск гарантирует, что для буферного пула будет выделено достаточное количество страниц хэша, так как теперь необходимо учитывать емкость PMEM на сервере.
В следующем примере гибридный буферный пул отключается для конкретной базы данных.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
По умолчанию гибридный буферный пул включен в области базы данных и отключен в области сервера.
Просмотр конфигурации гибридного буферного пула
Отображение значения времени выполнения
Следующий пример возвращает текущее состояние конфигурации гибридного буферного пула для экземпляра.
SELECT * FROM sys.server_memory_optimized_hybrid_buffer_pool_configuration;
В следующем примере перечислены базы данных и параметры уровня базы данных для гибридного буферного пула (is_memory_optimized_enabled).
Вы также можете подключить или отформатировать модуль PMEM без включения DAX и рассматривать его как обычное блочное устройство (то есть выполнять операции ввода-вывода через ядро). При такой настройке модули PMEM могут не использоваться SQL Server для выполнения байт-адресных операций (то есть, все вызовы будут использовать драйверы пространства ядра).
SELECT name, is_memory_optimized_enabled
FROM sys.databases;
Гибридный пул буферов с прямой записью
Гибридный пул буферов с поведением прямой записи уменьшает количество memcpy команд, которые необходимо выполнить на измененных страницах данных или индексов, размещенных на устройствах PMEM. Это делается с помощью устойчивого сохраненного буфера журнала в качестве средства для изменения страницы без необходимости копировать его в один из пулов буферов DRAM. Вместо этого страницы в файлах базы данных, размещенных на устройствах PMEM, изменяются непосредственно без необходимости кэшировать в буферном пуле DRAM, а затем асинхронно сбрасывать на диск. Это поведение по-прежнему соответствует семантике предварительного ведения журнала (WAL), так как записи (журнал) в сохраняемом буфере журнала транзакций были записаны или защищены для устойчивых носителей. Значительное повышение производительности наблюдалось для транзакционных рабочих нагрузок с помощью гибридного буферного пула и сохраняемого буфера журнала вместе таким образом.
Чтобы включить режим прямой записи, включите гибридный буферный пул и сохраненный буфер журнала для базы данных и включите флаг трассировки запуска 809.
Рекомендации по гибридному пулу буферов
При форматировании PMEM-устройства в Windows используйте максимальный размер единицы размещения, доступный для файловой системы NTFS (2 МБ в Windows Server 2019 и более поздних версий), и отформатируйте устройство для DAX (Direct Access).
Включите страницы блокировки в политике памяти в Windows.
Размеры файлов должны быть кратны 2 МБ (деление по модулю на 2 МБ должно давать ноль).
Если параметр области сервера для гибридного буферного пула отключен, функция не будет использоваться какой-либо пользовательской базой данных.
С включенным параметром области сервера для гибридного буферного пула можно использовать параметр области базы данных, чтобы отключить функцию для отдельных пользовательских баз данных.
По состоянию на SQL Server 2019 (15.x) CU 3 (см . KB4538118), кэширование чтения было включено по умолчанию, процесс отслеживания самых горячих страниц в гибридном буферном пуле, а затем автоматически повышен до пула буферов DRAM для повышения производительности.
По состоянию на SQL Server 2022 (16.x) CU 1 прямая запись — это поведение по умолчанию, когда гибридный буферный пул объединяется с сохраненным буфером журнала. Это должно повысить производительность почти во всех рабочих нагрузках, но всегда существует риск снижения производительности, и накопительный пакет обновлений должен быть тщательно проверен перед применением. В случае регрессии из-за изменения поведения, вы можете вернуться к предыдущему состоянию, используя флаг трассировки 898 на этапе запуска.
Начиная с SQL Server 2022 (16.x) CU 1, флаг трассировки 809 будет игнорироваться при запуске SQL Server. Флаг трассировки 809 и флаг трассировки 898 применяются только в Windows и не применяются в SQL Server на Linux. Флаги трассировки следует использовать только при перенаправлении для этого сертифицированным специалистом Microsoft Server.