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


Хранилище запросов для вторичных реплик

SQL Server 2022 (16.x)

Функция хранилища запросов для вторичных реплик обеспечивает для рабочих нагрузок вторичных реплик такие же функции хранилища запросов, как и для первичных. Если хранилище запросов для вторичных реплик включено, реплики отправляют сведения о выполнении запросов, которые обычно сохраняются в хранилище запросов первичной реплики. Затем первичная реплика сохраняет данные на диск в собственном хранилище запросов. По сути, первичная и все вторичные реплики делят общее хранилище запросов. Хранилище запросов существует в первичной реплике и в нем хранятся данные для всех реплик сразу. В настоящее время хранилище запросов для вторичных реплик доступно с экземплярами SQL Server 2022 (16.x), настроенными в группах доступности.

Внимание

Хранилище запросов для вторичных реплик — это предварительная версия функции. Он не предназначен для рабочих развертываний. См. заметки о выпуске SQL Server 2022 (16.0).

Перед включением хранилища запросов для вторичных реплик необходимо включить флаг трассировки 12606. Чтобы включить флаги трассировки, выполните следующие действия.

  1. В Windows запустите диспетчер конфигурации SQL Server.
  2. В списке служб SQL Server щелкните правой кнопкой мыши службу экземпляра SQL Server для экземпляра SQL Server 2022 (16.x). Выберите Свойства.
  3. Перейдите на вкладку "Пуск параметров ". В поле "Указание параметра запуска" добавьте значения -T12606 и нажмите кнопку "Добавить".
  4. Служба экземпляров SQL Server должна быть перезапущена до того, как изменения вступают в силу.

Включение хранилища запросов для вторичных реплик

Перед использованием хранилища запросов для вторичных реплик в экземпляре SQL Server необходимо иметь группу доступности AlwaysOn. Затем включите хранилище запросов для вторичных реплик с помощью параметров 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 для дополнительного объекта. 8 Указываетreadonly_reason, что запрос был запущен в вторичной реплике. Эти результаты показывают, что хранилище запросов во вторичной реплике успешно включено.

desired_state desired_state_desc actual_state actual_state_desc readonly_reason
4 READ_CAPTURE_SECONDARY 4 READ_CAPTURE_SECONDARY 8

После включения можно использовать sys.query_store_replicas для проверки работоспособности хранилища запросов на вторичной реплике.

Чтобы отключить хранилище запросов для вторичных реплик, подключитесь к базе данных в первичной реплике и выполните следующий код:

ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO

Наборы реплик

В настоящее время при включении хранилища запросов для вторичных реплик она включена для всех вторичных реплик.

Набор реплик определяется как все неименованные реплики, которые совместно используют роль (первичную, вторичную, геоторичную, геозначительную), или как отдельную именованную реплику. Хранимые данные о запросах можно анализировать как рабочие нагрузки на основе набора реплик. Хранилище запросов для реплик позволяет отслеживать и настраивать производительность любых уникальных рабочих нагрузок только для чтения, которые могут выполняться во вторичных репликах.

Рекомендации по управлению производительностью хранилища запросов для вторичных реплик

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

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

См. также

Далее