Поделиться через


Расширение буферного пула

В SQL Server 2014 расширение буферного пула обеспечивает простую интеграцию расширения памяти случайного доступа (т. е. диска с твердым состоянием) с пулом буферов ядра СУБД, чтобы значительно повысить пропускную способность ввода-вывода. Расширение буферного пула недоступно в каждом выпуске SQL Server. Дополнительные сведения см. в разделе Features Supported by the Editions of SQL Server 2014.

Преимущества расширения буферного пула

Главное назначение базы данных SQL Server — хранение и поиск данных, поэтому интенсивное использование операций дискового ввода-вывода — это основное свойство ядра СУБД. Так как операции ввода-вывода на диске могут использовать много ресурсов и занять относительно много времени, SQL Server фокусируется на том, чтобы сделать операции ввода-вывода высоко эффективными. Буферный пул служит основным источником размещения памяти SQL Server. Управление буфером — это ключевой компонент в достижении этой рациональности. Компонент управления буферами состоит из двух механизмов: диспетчер буферов для доступа к страницам базы данных и обновлению страниц базы данных и пула буферов, чтобы уменьшить объем операций ввода-вывода файла базы данных.

Страницы данных и индексов считываются с диска в буферный пул, а измененные страницы (так называемые «грязные страницы») записываются обратно на диск. Нехватка памяти в контрольных точках сервера и базы данных приводит к тому, что активные «грязные» страницы удаляются из буферного кэша, записываются на механические диски и считываются обратно в кэш. Обычно эти операции ввода-вывода представляют собой небольшие случайные операции чтения и записи в порядке от 4 до 16 КБ данных. Работа в режиме небольших произвольных операций ввода-вывода предполагает частые операции поиска, конкурирующие за перемещение головки диска, что увеличивает задержку ввода-вывода и сокращает общую пропускную способность ввода-вывода системы.

Типичный подход к устранению этих «узких мест» заключается в добавлении дополнительных модулей DRAM или высокопроизводительных шпинделей SAS. Хотя эти варианты полезны, они имеют значительные недостатки: DRAM дороже, чем накопители данных, и добавление спинделей увеличивает капитальные расходы на приобретение оборудования и повышает операционные затраты за счет повышенного энергопотребления и повышения вероятности выхода из строя компонентов.

Компонент расширения буферного пула расширяет кэш буферного пула с помощью памяти энергонезависимого хранилища (обычно на основе SSD-дисков). В результате этого расширения в буферном пуле становится возможным разместить рабочее множество данных большего объема, что обеспечивает подкачку операций ввода-вывода между ОЗУ и SSD-дисками. Это эффективно перераспределяет нагрузку небольших случайных операций ввода-вывода с механических дисков на SSD-диски. Благодаря более низкой задержке и улучшенной производительности случайных операций ввода-вывода SSD-дисков расширение буферного пула значительно повышает пропускную способность ввода-вывода.

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

  • Повышенная пропускная способность произвольных операций ввода-вывода

  • Уменьшенная задержки ввода-вывода

  • Повышенная пропускная способность транзакций

  • Улучшенная производительность операций чтения с использованием крупного гибридного буферного пула

  • Архитектура кэширования, которая может использовать современные и будущие недорогие диски

Концепции

Следующие термины относятся к компоненту расширения буферного пула.

Твердотельные накопители (SSD) хранят данные в памяти надёжным образом. Дополнительные сведения см. в этом определении.

Буфер в SQL Server — это 8-КБ-страница в памяти, то же размер, что и страница данных или индекса. Буферный кэш делится на 8-килобайтовые страницы. Страница остается в буферном кэше, пока диспетчеру буферов требуется область буфера для чтения дополнительных данных. Данные записываются обратно на диск, только если они изменяются. Эти измененные страницы в памяти называют «грязными». Страница очищается, если она эквивалентна его образу базы данных на диске. Данные в буферном кэше могут измениться несколько раз, прежде чем будут сохранены обратно на диске.

Буферный пул также называется кэшем буфера. Буферный пул — это глобальный ресурс, который совместно используется всеми базами данных для кэшированных страниц данных. Максимальный и минимальный размер кэша буферного пула определяется во время запуска или при динамической перенастройке экземпляра SQL Server с помощью sp_configure. Этот размер определяет максимальное число страниц, которые могут кэшироваться в буферном пуле в любое время в запущенном экземпляре.

Контрольная точка A создает известную хорошую точку, из которой ядро СУБД может начать применять изменения, содержащиеся в журнале транзакций во время восстановления после неожиданного завершения работы или сбоя. Новая контрольная точка записывает «грязные» страницы вместе со сведениями журнала транзакций из памяти на диск, а также сведения о журнале транзакций. Дополнительные сведения см. в статье Контрольные точки базы данных (SQL Server).

Сведения о расширении буферного пула

SSD-хранилище используется как расширение подсистемы памяти вместо дисковой подсистемы хранилища. Это означает, что файл расширения буферного пула позволяет диспетчеру буферного пула использовать DRAM и NAND-Flash для реализации буферного пула намного большего размера из изменяемых страниц в энергонезависимой ОЗУ на основе SSD. Это создает многоуровневую иерархию кэширования, где на 1-м уровне (L1) DRAM, а на 2-м уровне (L2) файл расширения буферного пула на SSD-дисках. В кэш L2 записываются только чистые страницы, что позволяет обеспечить безопасность данных. Диспетчер буферов обеспечивает перемещение чистых страниц между кэшами L1 и L2.

На следующем рисунке представлен общий обзор архитектуры буферного пула относительно других компонентов SQL Server.

Архитектура расширения буферного пула SSD

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

Лучшие практики

Рекомендуется следовать приведенным ниже правилам.

  • После включения расширения буферного пула в первый раз рекомендуется перезапустить экземпляр SQL Server, чтобы получить максимальные преимущества производительности.

  • Размер расширения буферного пула может составлять до 32 раз, чем значение max_server_memory для выпусков Enterprise, а для выпуска Standard — до 4 раз. Мы рекомендуем соотношение между размером физической памяти (max_server_memory) и размером расширения буферного пула размером 1:16 или меньше. Более низкое соотношение в диапазоне от 1:4 до 1:8 может быть оптимальным. Сведения о настройке параметра max_server_memory см. в разделе "Параметры конфигурации сервера памяти сервера".

  • Тщательно протестируйте расширение буферного пула перед реализацией в рабочей среде. После запуска в рабочей среде не вносите изменения конфигурации в файл и не отключайте функцию. Эти действия могут негативно повлиять на производительность сервера, так как буферный пул значительно уменьшается при отключении функции. При отключении память, используемая для поддержки функции, не будет восстановлена до перезапуска экземпляра SQL Server. Однако если функция включена повторно, память будет повторно использоваться без перезапуска экземпляра.

Возврат сведений о расширении буферного пула

Можно использовать следующие динамические административные представления для отображения конфигурации расширения буферного пула и получения сведений о страницах данных в расширении.

Счетчики производительности доступны в объекте диспетчера буферов SQL Server для трассировки страниц данных в файле расширения буферного пула. Дополнительные сведения см. в разделе Счетчики производительности расширения буферного пула.

Доступны следующие Xevents.

XEvent Описание Параметры
Блок расширения буфера страниц sqlserver.buffer_pool_extension_pages_written. Срабатывает, когда страница или группа страниц извлекаются из буферного пула и записываются в файл расширения буферного пула. номер_страницы

идентификатор_первой_страницы

смещение первой страницы

initiator_numa_node_id
sqlserver.чтение_страниц_расширения_буферного_пула Возникает при считывании страницы из файла расширения буферного пула в буферный пул. номер_страницы

идентификатор_первой_страницы

смещение первой страницы

initiator_numa_node_id
sqlserver.buffer_pool_extension_pages_evicted Возникает, когда страница извлекается из файла расширения буферного пула. номер_страницы

first_page_id

смещение первой страницы

initiator_numa_node_id
sqlserver.buffer_pool_eviction_thresholds_recalculated Возникает при вычислении порогового значения вытеснения. порог теплоты

порог холода

страницы_избежавшие_выселение

причина_обхода_выселения

описание_причин_обхода_выселения
Описание задачи Тема
Включение и настройка расширения буферного пула. ALTER SERVER CONFIGURATION (Transact-SQL)
Изменение конфигурации расширения буферного пула ALTER SERVER CONFIGURATION (Transact-SQL)
Просмотр конфигурации расширения буферного пула sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
Наблюдение за расширением буферного пула sys.dm_os_buffer_descriptors (Transact-SQL)

Счетчики производительности