Расширение буферного пула
Область применения:SQL Server
Появилось в SQL Server 2014 (12.x), расширение буферного пула обеспечивает простую интеграцию расширения неразрешенной памяти случайного доступа (то есть твердотельный диск) к пулу буферов ядро СУБД, чтобы значительно повысить пропускную способность ввода-вывода. Расширение буферного пула недоступно в каждом выпуске SQL Server. Дополнительные сведения см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2016.
Преимущества расширения буферного пула
Главное назначение базы данных SQL Server — хранение и поиск данных, поэтому интенсивное использование операций дискового ввода-вывода — это основное свойство ядра СУБД. Так как операции ввода-вывода на диске могут использовать много ресурсов и занять относительно много времени, SQL Server фокусируется на том, чтобы сделать операции ввода-вывода высоко эффективными. Буферный пул служит основным источником размещения памяти SQL Server. Управление буфером — это ключевой компонент в достижении этой рациональности. Компонент управления буферами состоит из двух механизмов: диспетчера буферов для доступа к страницам баз данных и их обновления и буферного пула для сокращения операций файлового ввода-вывода базы данных.
Страницы данных и индексов считываются с диска в буферный пул, а измененные страницы (так называемые «грязные страницы») записываются обратно на диск. Нехватка памяти в контрольных точках сервера и базы данных приводит к тому, что активные «грязные» страницы удаляются из буферного кэша, записываются на механические диски и считываются обратно в кэш. Обычно эти операции ввода-вывода представляют собой небольшие случайные операции чтения и записи в порядке от 4 КБ до 16 КБ данных. Работа в режиме небольших произвольных операций ввода-вывода предполагает частые операции поиска, конкурирующие за перемещение головки диска, что увеличивает задержку ввода-вывода и сокращает общую пропускную способность ввода-вывода системы.
Типичный подход к устранению этих «узких мест» заключается в добавлении дополнительных модулей DRAM или высокопроизводительных шпинделей SAS. Хотя эти варианты полезны, у них есть значительные недостатки: DRAM дороже, чем накопители данных, а добавление спинделей увеличивает капитальные затраты на приобретение оборудования и повышает операционные расходы за счет увеличения потребления энергии и повышения вероятности отказа компонентов.
Компонент расширения буферного пула расширяет кэш буферного пула с помощью памяти энергонезависимого хранилища (обычно на основе SSD-дисков). В результате этого расширения в буферном пуле становится возможным разместить рабочее множество данных большего объема, что обеспечивает подкачку операций ввода-вывода между ОЗУ и SSD-дисками. Это эффективно перераспределяет нагрузку небольших случайных операций ввода-вывода с механических дисков на SSD-диски. Благодаря более низкой задержке и улучшенной производительности случайных операций ввода-вывода SSD-дисков расширение буферного пула значительно повышает пропускную способность ввода-вывода.
В следующем списке приведены преимущества расширения буферного пула.
Повышенная пропускная способность произвольных операций ввода-вывода
Уменьшенная задержки ввода-вывода
Повышенная пропускная способность транзакций
Улучшенная производительность операций чтения с использованием крупного гибридного буферного пула
Архитектура кэширования, которая может использовать современные и будущие недорогие диски
Основные понятия
Следующие термины относятся к компоненту расширения буферного пула.
Срок | Description |
---|---|
твердотельный накопитель (SSD) | Твердотельные накопители постоянно хранят данные в оперативной памяти (ОЗУ). Смотрите определение Википедии для получения дополнительной информации . |
буфер | В SQL Server буфер — это страница размером 8 КБ в памяти, то же размер, что и страница данных или индекса. Буферный кэш делится на 8-килобайтовые страницы. Страница остается в буферном кэше, пока диспетчеру буферов требуется область буфера для чтения дополнительных данных. Данные записываются обратно на диск, только если они изменяются. Эти измененные страницы в памяти называют «грязными». Страница очищается, если она эквивалентна его образу базы данных на диске. Данные в буферном кэше могут измениться несколько раз, прежде чем будут сохранены обратно на диске. |
буферный пул | Также называется кэша буфера. Буферный пул — это глобальный ресурс, который совместно используется всеми базами данных для кэшированных страниц данных. Максимальный и минимальный размер кэша буферного пула определяется во время запуска или при динамической перенастройке экземпляра SQL Server с помощью sp_configure. Этот размер определяет максимальное число страниц, которые могут кэшироваться в буферном пуле в любое время в запущенном экземпляре. Максимальная память, которую можно зафиксировать с помощью расширения буферного пула, может быть ограничена другими приложениями, работающими на компьютере, в случае, если эти приложения создают значительное давление на память. |
контрольной точки | Контрольная точка создает известную хорошую точку, из которой ядро СУБД может начать применять изменения, содержащиеся в журнале транзакций во время восстановления после неожиданного завершения работы или сбоя. Новая контрольная точка записывает «грязные» страницы вместе со сведениями журнала транзакций из памяти на диск, а также сведения о журнале транзакций. Дополнительные сведения см. в контрольных точках базы данных (SQL Server). |
Сведения
SSD-хранилище используется как расширение подсистемы памяти вместо дисковой подсистемы хранилища. Это означает, что файл расширения буферного пула позволяет диспетчеру буферного пула использовать DRAM и NAND-Flash для реализации буферного пула намного большего размера из изменяемых страниц в энергонезависимой ОЗУ на основе SSD. Это создает многоуровневую иерархию кэширования, где на 1-м уровне (L1) DRAM, а на 2-м уровне (L2) файл расширения буферного пула на SSD-дисках. В кэш L2 записываются только чистые страницы, что позволяет обеспечить безопасность данных. Диспетчер буферов обеспечивает перемещение чистых страниц между кэшами L1 и L2.
На следующем рисунке представлен общий обзор архитектуры буферного пула относительно других компонентов SQL Server.
Если расширение буферного пула включено, оно определяет размер и путь к файлу кэширования буферного пула на SSD-диске. Этот файл представляет собой непрерывную степень хранения на SSD и статически настраивается во время запуска экземпляра SQL Server. Параметры файла конфигурации можно изменить, только если расширение буферного пула отключено. Если расширение буферного пула отключено, все связанные параметры конфигурации удаляются из реестра. Файл расширения буферного пула удаляется после завершения работы экземпляра SQL Server.
Ограничения емкости
Выпуск SQL Server Enterprise позволяет максимальному размеру расширения буферного пула в 32 раз превышать значение max server memory
.
Выпуск SQL Server Standard позволяет использовать максимальный размер расширения буферного пула в четыре раза больше, чем значение max server memory
.
Передовой опыт
Рекомендуется следовать приведенным ниже правилам.
После первого включения расширения буферного пула необходимо перезапустить экземпляр SQL Server, чтобы получить максимальное преимущество производительности.
Задайте расширение буферного пула таким образом, чтобы соотношение между размером физической памяти (
max server memory
) и размером расширения буферного пула 1:16 или меньше. Более низкое соотношение в диапазоне от 1:4 до 1:8 может быть оптимальным. Для получения информации о настройке параметраmax server memory
см. параметры конфигурации памяти сервера.Тщательно протестируйте расширение буферного пула перед реализацией в рабочей среде. После запуска в рабочей среде избегайте внесения изменений в конфигурацию файла или отключения этой функции. Эти действия могут негативно повлиять на производительность сервера, так как буферный пул значительно уменьшается при отключении функции. При отключении память, используемая для поддержки функции, не будет восстановлена до перезапуска экземпляра SQL Server. Однако если функция включена повторно, память повторно используется без перезапуска экземпляра.
Возврат сведений о расширении буферного пула
Можно использовать следующие динамические административные представления для отображения конфигурации расширения буферного пула и получения сведений о страницах данных в расширении.
Счетчики производительности доступны в объекте диспетчера буферов SQL Server для трассировки страниц данных в файле расширения буферного пула. Дополнительные сведения см. в разделе Счетчики производительности расширения буферного пула.
Доступны следующие XEvents.
XEvent | Description | Параметры |
---|---|---|
sqlserver. buffer_pool_extension_pages_written |
Срабатывает, когда страница или группа страниц извлекаются из буферного пула и записываются в файл расширения буферного пула. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver. buffer_pool_extension_pages_read |
Возникает при считывании страницы из файла расширения буферного пула в буферный пул. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver. buffer_pool_extension_pages_evicted |
Возникает, когда страница извлекается из файла расширения буферного пула. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver. buffer_pool_eviction_thresholds_recalculated |
Возникает при вычислении порогового значения вытеснения. | warm_threshold cold_threshold pages_bypassed_eviction eviction_bypass_reason eviction_bypass_reason_description |
Связанные задачи
Описание задачи | Статья |
---|---|
Включение и настройка расширения буферного пула. | ИЗМЕНИТЬ КОНФИГУРАЦИЮ СЕРВЕРА |
Изменение конфигурации расширения буферного пула | ALTER SERVER CONFIGURATION |
Просмотр конфигурации расширения буферного пула | sys.dm_os_buffer_pool_extension_configuration |
Наблюдение за расширением буферного пула |
sys.dm_os_buffer_descriptors SQL Server, объект Buffer Manager |