Хранилище запросов для вторичных реплик
SQL Server 2022 (16.x)
Функция хранилища запросов для вторичных реплик позволяет использовать те же функции хранилища запросов для рабочих нагрузок вторичной реплики, доступных для первичных реплик. Если хранилище запросов для вторичных реплик включено, реплики отправляют сведения о выполнении запроса, которые обычно хранятся в хранилище запросов обратно в основную реплику. Затем первичная реплика сохраняет данные на диск в собственном хранилище запросов. По сути, между основными и всеми вторичными репликами используется одно хранилище запросов. Хранилище запросов существует на первичной реплике и сохраняет данные для всех реплик вместе. В настоящее время хранилище запросов для вторичных реплик доступно с экземплярами SQL Server 2022 (16.x), настроенными в группах доступности.
Важный
Хранилище запросов для вторичных реплик — это функция предварительной версии. Он не предназначен для рабочих развертываний. См. заметки о выпуске SQL Server 2022 (16.0) .
Чтобы включить хранилище запросов для вторичных реплик, сначала необходимо активировать флаг трассировки 12606. Чтобы включить флаги трассировки :
- В Windows запустите Диспетчер конфигураций SQL Server.
- В списке служб SQL Serverщелкните правой кнопкой мыши на службу экземпляра SQL Server для вашего экземпляра SQL Server 2022 (16.x). Выберите Свойства.
- Перейдите на вкладку "Параметры запуска". В поле "Укажите параметр запуска:" добавьте значения:
-T12606
и выберите "Добавить". - Служба экземпляров SQL Server должна быть перезапущена до того, как изменения вступают в силу.
Включение хранилища запросов для вторичных реплик
Прежде чем использовать хранилище запросов для вторичных реплик в экземпляре SQL Server, необходимо иметь группу доступности Always On. Затем включите хранилище запросов для вторичных реплик с помощью параметров ALTER DATABASE SET (Transact-SQL).
Если хранилище запросов еще не включено или не находится в режиме READ_WRITE на первичной реплике, необходимо включить его и установить нужный режим перед продолжением. Выполните следующие действия для каждой требуемой базы данных на первичной реплике:
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
Чтобы включить хранилище запросов во всех вторичных репликах, подключитесь к первичной реплике и выполните следующую команду для каждой требуемой базы данных. В настоящее время при активации хранилища запросов для вторичных реплик оно активируется для всех вторичных реплик.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
Чтобы отключить хранилище запросов во всех вторичных репликах, подключитесь к первичной реплике и выполните следующие действия для каждой требуемой базы данных:
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Вы можете убедиться, что хранилище запросов включено на вторичной реплике, подключився к базе данных на вторичной реплике и выполнив следующие действия:
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
В следующем примере результаты выполнения запроса к sys.database_query_store_options показывают, что хранилище запросов находится в состоянии READ_CAPTURE_SECONDARY для вторичной базы данных.
readonly_reason
8
указывает, что запрос был запущен на вторичной реплике. Эти результаты свидетельствуют о том, что хранилище запросов успешно включено на вторичной реплике.
желаемое состояние | описание желаемого состояния | текущее состояние | описание актуального состояния | readonly_reason |
---|---|---|---|---|
4 | СЧИТАТЬ_ЗАХВАТ_ВТОРИЧНЫЙ | 4 | ЧТЕНИЕ_ЗАХВАТ_ВТОРИЧНОГО | 8 |
После включения можно использовать sys.query_store_replicas для проверки работоспособности хранилища запросов на вторичной реплике.
Чтобы отключить хранилище запросов для вторичных реплик, подключитесь к базе данных на первичной реплике и запустите следующий код:
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Наборы реплик
Когда хранилище запросов для вторичных реплик включено, оно включается для всех вторичных реплик.
Набор реплик определяется как все неименованные реплики, которые выполняют роль (первичной, вторичной, гео вторичной, гео первичной) или как отдельная именованная реплика. Данные, хранящиеся в запросах, можно анализировать как рабочие нагрузки на основе набора реплик. Хранилище запросов для реплик позволяет отслеживать и настраивать производительность любых уникальных рабочих нагрузок, доступных только для чтения, которые могут выполняться для вторичных реплик.
Рекомендации по производительности хранилища запросов для вторичных реплик
Канал, используемый вторичными репликами для отправки сведений запроса обратно в основную реплику, является тем же каналом, который используется для обновления вторичных реплик. Данные хранятся в одних и том же таблицах в первичной реплике, которую хранилище запросов использует для запросов, выполняемых на первичной реплике, что приводит к росту размера хранилища запросов.
Таким образом, если система находится под значительной нагрузкой, вы можете заметить некоторое замедление из-за перегрузки канала. Кроме того, те же проблемы с захватом запросов "ad-hoc", которые имеются в Хранилище запросов, будут сохраняться для рабочих нагрузок на вторичных репликах. Узнайте больше о том, как сохранить наиболее релевантные данные в Хранилище запросов.
См. также
- ALTER DATABASE SET параметры (Transact-SQL)
- sys.database_query_store_options (Transact-SQL)
- sys.query_store_replicas
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.sp_query_store_force_plan (Transact-SQL)
Дальнейшие действия
- группы доступности AlwaysOn
- рекомендации по использованию хранилища запросов
- рекомендации по управлению хранилищем запросов
- Настройка производительности с помощью хранилища запросов
- подсказки хранилища запросов
- сценарии использования хранилища запросов
- Открыть Монитор активности (SQL Server Management Studio)