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


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

SQL Server 2022 (16.x)

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

Замечания

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

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

  1. В Windows запустите Диспетчер конфигураций SQL Server.

  2. В списке служб SQL Serverщелкните правой кнопкой мыши на службу экземпляра SQL Server для вашего экземпляра SQL Server 2022 (16.x). Выберите Свойства.

  3. Перейдите на вкладку "Параметры запуска". В поле "Укажите параметр запуска:" добавьте значения: -T12606 и выберите "Добавить".

  4. Служба экземпляров SQL Server должна быть перезапущена до того, как изменения вступают в силу.

Замечание

Начиная с предварительной версии SQL Server 2025 (17.x), хранилище запросов для доступных для чтения вторичных файлов не находится в предварительной версии и включено по умолчанию. Флаг трассировки 12606 больше не требуется для использования хранилища запросов для доступных для чтения вторичных файлов. Включение флага трассировки 12606 в предварительной версии SQL Server 2025 (17.x) отключает функцию хранилища запросов для читаемых вторичных реплик.

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

Прежде чем использовать хранилище запросов для доступных для чтения вторичных файлов в экземпляре SQL Server, необходимо иметь группу доступности AlwaysOn. Затем включите хранилище запросов для доступных для чтения вторичных файлов с помощью параметров ALTER DATABASE SET.

Если хранилище запросов еще не включено в режиме 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 указывает, что запрос был запущен на вторичной реплике. Эти результаты свидетельствуют о том, что хранилище запросов успешно включено на вторичной реплике.

желаемое состояние описание желаемого состояния текущее состояние описание актуального состояния причина только для чтения
4 СЧИТАТЬ_ЗАХВАТ_ВТОРИЧНЫЙ 4 СЧИТАТЬ_ЗАХВАТ_ВТОРИЧНЫЙ 8

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

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

ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO

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

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

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

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

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

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