Buffer Pool Extension
Появилось в SQL Server 2014 г., расширение буферного пула обеспечивает беспроблемную интеграцию расширения энергонезависимой памяти произвольного доступа (т. е. твердотельных накопителей) с буферным пулом ядра СУБД, чтобы значительно повысить пропускную способность ввода-вывода. Расширение буферного пула доступно не во всех выпусках SQL Server . Дополнительные сведения см. в разделе Функции, поддерживаемые выпусками SQL Server 2014.
Преимущества расширения буферного пула
Главное назначение базы данных SQL Server — хранение и поиск данных, поэтому интенсивное использование операций дискового ввода-вывода — это основное свойство компонента Database Engine. Так как дисковые операции ввода-вывода могут потреблять много ресурсов и требовать относительно длительного времени для выполнения, в SQL Server особое внимание уделено рациональному использованию операций ввода-вывода. Буферный пул служит основным источником размещения памяти SQL Server. Управление буфером — это ключевой компонент в достижении этой рациональности. Компонент управления буферами состоит из двух механизмов: диспетчера буферов для доступа к страницам баз данных и их обновления и буферного пула для сокращения операций файлового ввода-вывода базы данных.
Страницы данных и индексов считываются с диска в буферный пул, а измененные страницы (так называемые «грязные страницы») записываются обратно на диск. Нехватка памяти в контрольных точках сервера и базы данных приводит к тому, что активные «грязные» страницы удаляются из буферного кэша, записываются на механические диски и считываются обратно в кэш. Эти операции ввода-вывода обычно представляют небольшие произвольные операции чтения и записи с объемом данных от 4 до 16 КБ. Работа в режиме небольших произвольных операций ввода-вывода предполагает частые операции поиска, конкурирующие за перемещение головки диска, что увеличивает задержку ввода-вывода и сокращает общую пропускную способность ввода-вывода системы.
Типичный подход к устранению этих «узких мест» заключается в добавлении дополнительных модулей DRAM или высокопроизводительных шпинделей SAS. Хотя эти варианты работают, у них есть существенные недостатки: модули DRAM дороже, чем диски хранения данных, а установка шпинделей увеличивает капитальные расходы при покупке оборудовании и эксплуатационные расходы из-за повышения энергопотребления и вероятности сбоя компонента.
Компонент расширения буферного пула расширяет кэш буферного пула с помощью памяти энергонезависимого хранилища (обычно на основе SSD-дисков). В результате этого расширения в буферном пуле становится возможным разместить рабочее множество данных большего объема, что обеспечивает подкачку операций ввода-вывода между ОЗУ и SSD-дисками. Это эффективно перераспределяет нагрузку небольших случайных операций ввода-вывода с механических дисков на SSD-диски. Благодаря более низкой задержке и улучшенной производительности случайных операций ввода-вывода SSD-дисков расширение буферного пула значительно повышает пропускную способность ввода-вывода.
В следующем списке приведены преимущества расширения буферного пула.
Повышенная пропускная способность произвольных операций ввода-вывода
Уменьшенная задержки ввода-вывода
Повышенная пропускная способность транзакций
Улучшенная производительность операций чтения с использованием крупного гибридного буферного пула
Архитектура кэширования, которая может использовать современные и будущие недорогие диски
Основные понятия
Следующие термины относятся к компоненту расширения буферного пула.
Твердотельные накопители (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. Это позволит получить максимальную производительность.
Размер расширения буферного пула может достигать 32-кратного размера значения max_server_memory для выпусков Enterprise и 4-кратного размера — для выпуска Standard. Рекомендуемое соотношение между размером физической памяти (max_server_memory) и размером буферного пула расширения файлов не должно превышать 1:16. Более низкое значение в диапазоне от 1:4 до 1:8 может быть оптимальными. Сведения о настройке параметра max_server_memory см. в разделе Параметры конфигурации сервера "Server Memory".
Тщательно протестируйте расширение буферного пула перед реализацией в рабочей среде. После внедрения в рабочую среду не следует изменять конфигурацию в файле или отключать функцию. Эти действия могут отрицательно повлиять на производительность сервера, поскольку размер буферного пула значительно снижается, когда эта функция отключена. При отключении память, используемая для поддержки функции, не возвращается в кучу, пока не произойдет перезагрузка экземпляра SQL Server. Однако, если функцию снова включить, память будет использоваться повторно без перезапуска экземпляра.
Получение сведений о расширении буферного пула
Можно использовать следующие динамические административные представления для отображения конфигурации расширения буферного пула и получения сведений о страницах данных в расширении.
Счетчики производительности доступны в объекте диспетчера буферов SQL Server для трассировки страниц данных в файле расширения буферного пула. Дополнительные сведения см. в разделе Счетчики производительности расширения буферного пула.
Доступны следующие события Xevent.
XEvent | Описание | Параметры |
---|---|---|
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 (Transact-SQL) |
Изменение конфигурации расширения буферного пула | ALTER SERVER CONFIGURATION (Transact-SQL) |
Просмотр конфигурации расширения буферного пула | sys.dm_os_buffer_pool_extension_configuration (Transact-SQL) |
Наблюдение за расширением буферного пула | sys.dm_os_buffer_descriptors (Transact-SQL) Счетчики производительности |