Query Store per le repliche secondarie
SQL Server 2022 (16.x)
La funzione Query Store per le repliche secondarie consente di usare le stesse funzionalità di Query Store nei carichi di lavoro di replica secondaria disponibili per le repliche primarie. Quando è abilitata la funzione Query Store per le repliche secondarie, le repliche inviano le informazioni sull'esecuzione della query che normalmente vengono archiviate in Query Store alla replica primaria. La replica primaria mantiene quindi i dati su disco all'interno del proprio Query Store. In sostanza, è presente un Query Store condiviso tra la replica primaria e tutte le repliche secondarie. Query Store esiste nella replica primaria e archivia insieme i dati per tutte le repliche. Al momento, Query Store per le repliche secondarie è disponibile con le istanze di SQL Server 2022 (16.x) configurate nei gruppi di disponibilità.
Importante
Query Store per le repliche secondarie è una funzionalità di anteprima. Non è stata progettata per la distribuzione della produzione. Vedere Note sulla versione di SQL Server 2022 (16.0).
È necessario abilitare il flag di traccia 12606 prima di poter abilitare Query Store per le repliche secondarie. Per abilitare il flag di traccia:
- In Windows avviare Gestione configurazione SQL Server.
- Nell'elenco di Servizi SQL Server fare clic con il pulsante destro del mouse sul servizio di istanza di SQL Server per l'istanza di SQL Server 2022 (16.x). Selezionare Proprietà.
- Selezionare la scheda Avvia parametri. Nel campo Specificare un parametro di avvio: aggiungere i valori
-T12606
e selezionare Aggiungi. - Per poter rendere effettiva l'impostazione, è necessario riavviare il servizio istanza di SQL Server.
Abilitare Query Store per le repliche secondarie
Prima di usare Query Store per le repliche secondarie in un'istanza di SQL Server, è necessario avere un gruppo di disponibilità Always On. Abilitare quindi Query Store per le repliche secondarie usando le opzioni ALTER DATABASE SET (Transact-SQL).
È necessario abilitare Query Store e impostare la modalità READ_WRITE nella replica primaria prima di procedere. Eseguire quanto segue per ogni database desiderato nella replica primaria:
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
Per abilitare Query Store in tutte le repliche secondarie, connettersi alla replica primaria ed eseguire le operazioni seguenti per ogni database desiderato. Al momento quando è abilitato Query Store per le repliche secondarie riguarda tutte le repliche secondarie.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
Per disabilitare Query Store su tutte le repliche secondarie, connettersi alla replica primaria ed eseguire le operazioni seguenti per ogni database desiderato:
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
È possibile verificare che Query Store sia abilitato in una replica secondaria connettendosi al database nella replica secondaria ed eseguendo quanto segue:
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
I seguenti risultati di esempio dall'esecuzione di query sys.database_query_store_options indicano che Query Store si trova in uno stato READ_CAPTURE_SECONDARY per il database secondario. L'oggetto readonly_reason
di 8
indica che la query è stata eseguita su una replica secondaria. Questi risultati indicano che Query Store è stato abilitato correttamente nella replica secondaria.
desired_state | desired_state_desc | actual_state | actual_state_desc | readonly_reason |
---|---|---|---|---|
4 | READ_CAPTURE_SECONDARY | 4 | READ_CAPTURE_SECONDARY | 8 |
Dopo l'abilitazione, è possibile usare sys.query_store_replicas per verificare l'integrità di Query Store nella replica secondaria.
Per disabilitare Query Store per le repliche secondarie, connettersi al database nella replica primaria ed eseguire il codice seguente:
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Set di repliche
Al momento quando è abilitato Query Store per le repliche secondarie riguarda tutte le repliche secondarie.
Per set di repliche si intende l’insieme di repliche senza nome che condividono un ruolo (primario, secondario, secondario geografico, primario geografico) o un singola replica con nome. I dati archiviati sulle query possono essere analizzati come carichi di lavoro in base a un set di repliche. Query Store per le repliche consente di monitorare e regolare le prestazioni di qualsiasi carico di lavoro univoco di sola lettura che potrebbe essere in esecuzione su repliche secondarie.
Considerazioni sulle prestazioni di Query Store per le repliche secondarie
Il canale usato dalle repliche secondarie per inviare informazioni sulle query alla replica primaria è lo stesso canale usato per mantenere aggiornate le repliche secondarie. I dati vengono archiviati nelle stesse tabelle della replica primaria usata da Query Store per le query eseguite nella replica primaria, aumentando le dimensioni di Query Store.
Pertanto, quando un sistema è in presenza di carico significativo, è probabile che si verifichi un rallentamento a causa dell'overload del canale. Inoltre, gli stessi problemi di acquisizione di query ad hoc esistenti per Query Store continueranno attualmente per i carichi di lavoro eseguiti nelle repliche secondarie. Altre informazioni su come mantenere i dati più rilevanti in Query Store.
Vedi anche
- Opzioni di 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)