SQL Server 2019: Гибридный пул буферов (Hybrid Buffer Pool)

Гибридный пул буферов (Hybrid Buffer Pool)
Doc

Doc

АйТишник со стажем... Профиль автора.

Гибридный пул буферов в Microsoft SQL Server 2019 позволяет объектам пула буферов ссылаться на страницы данных в файлах базы данных, находящихся на устройствах постоянной памяти (PMEM), вместо копий страниц данных, кэшированных в энергозависимой DRAM. Эта функция представлена в SQL Server 2019 начиная с версии 15.x.



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

Устройства с постоянной памятью (PMEM) имеют побайтовую адресацию, и если используется файловая система с поддержкой постоянной памяти (DAX) (например, XFS, EXT4 или NTFS), файлы в файловой системе могут быть доступны с помощью API обычной файловой системы  в ОС. В качестве альтернативы он может выполнять так называемые операции загрузки и сохранения с картами памяти файлов на устройстве. Это позволяет приложениям, поддерживающим PMEM, таким как SQL Server, получать доступ к файлам на устройстве без обхода традиционного стека хранилища.

Гибридный буферный пул использует эту способность для выполнения операций загрузки и сохранения файлов с отображением памяти, чтобы использовать устройство PMEM в качестве кэша для буферного пула, а также для хранения файлов базы данных. Это создает уникальную ситуацию, когда и логическое, и физическое чтение, по сути, являются одной и той же операцией. Устройства постоянной памяти доступны через шину памяти, как и обычная энергозависимая DRAM.

На устройстве кэшируются только чистые страницы данных для гибридного буферного пула. Когда страница помечается как грязная, она копируется в буферный пул DRAM, прежде чем в конечном итоге будет записана обратно на устройство PMEM и снова помечена как чистая. Это будет происходить во время обычных операций контрольной точки аналогично тому, как это выполняется для стандартного блочного устройства.

Функция гибридного буферного пула доступна как для Windows, так и для Linux. Устройство PMEM должно быть отформатировано с файловой системой, поддерживающей DAX (DirectAccess). Все файловые системы XFS, EXT4 и NTFS поддерживают DAX. SQL Server автоматически определяет, находятся ли файлы данных на правильно отформатированном устройстве PMEM, и выполняет отображение файлов базы данных в памяти при запуске, когда новая база данных присоединяется, восстанавливается или создается.

 

Как включить гибридный буферный пул

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;

По умолчанию гибридный буферный пул включен на уровне базы данных (database scope).

 

Как отключить гибридный буферный пул

В следующем примере гибридный пул буферов отключается на уровне экземпляра:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

По умолчанию гибридный буферный пул отключен на уровне экземпляра. Чтобы это изменение вступило в силу, необходимо перезапустить экземпляр. Это гарантирует, что для пула буферов будет выделено достаточно хэш-страниц, поскольку теперь необходимо учитывать емкость PMEM на сервере.

В следующем примере отключается гибридный буферный пул для конкретной базы данных.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

По умолчанию гибридный буферный пул включен в области базы данных (database scope).

Просмотр конфигурации гибридного буферного пула

В следующем примере возвращается текущее состояние конфигурации гибридного буферного пула экземпляра.

SELECT * FROM
sys.server_memory_optimized_hybrid_buffer_pool_configuration;

В следующем примере перечислены базы данных и параметр уровня базы данных для гибридного буферного пула (is_memory_optimized_enabled).

SELECT name, is_memory_optimized_enabled FROM sys.databases;

 

Советы и рекомендации по настройке для гибридного буферного пула

  • При форматировании устройства PMEM в Windows используйте самый большой размер единицы распределения, доступный для NTFS (2 МБ в Windows Server 2019), и убедитесь, что устройство отформатировано для DAX (прямой доступ).
  • Используйте заблокированные страницы в памяти (Locked Pages in Memory) в Windows.
  • Размер файлов должен быть кратен 2 МБ (по модулю 2 МБ должен быть равен нулю).
  • Если параметр пула гибридных буферов выключен на уровне сервера, функция не будет использоваться ни одной пользовательской базой данных.
  • Если параметр пула гибридных буферов включен на уровне сервера, вы можете использовать параметр области базы данных, чтобы отключить эту функцию для отдельных пользовательских баз данных.

 Надеюсь приведенные рекомендации по настройке  Гибридного пул буферов (Hybrid Buffer Pool) в MS  SQL Server 2019 будут Вам полезны!

Вас заинтересует / Intresting for you:

Медленный поиск в MS SQL 2008:...
Медленный поиск в MS SQL 2008:... 793 просмотров Андрей Васенин Wed, 09 Jun 2021, 18:40:58
Как найти столбец по имени в б...
Как найти столбец по имени в б... 2946 просмотров Андрей Васенин Wed, 09 Jun 2021, 18:38:14
MS SQL: поиск ключевого слова ...
MS SQL: поиск ключевого слова ... 2843 просмотров Андрей Васенин Wed, 09 Jun 2021, 06:02:30
Что нового в SQL Server 2019? ...
Что нового в SQL Server 2019? ... 2725 просмотров Doctor Mon, 15 Feb 2021, 19:46:52
Войдите чтобы комментировать

apv аватар
apv ответил в теме #9924 3 года 1 мес. назад
Статья хороша, прямо как официальная документация... ))) Особенно цены рекомендации по настройке Гибридного пул буферов!
Doc аватар
Doc ответил в теме #9923 3 года 1 мес. назад
Ну и как Вам статья?