Query Store per le repliche secondarie
SQL Server 2022 (16.x)
La funzionalità Query Store per repliche secondarie abilita la stessa funzionalità di Query Store nei carichi di lavoro di replica secondaria disponibili per le repliche primarie. Quando Query Store per le repliche secondarie è abilitato, le repliche inviano le informazioni sull'esecuzione della query che normalmente vengono archiviate nell'Archivio query alla replica primaria. La replica primaria quindi persiste i dati su disco all'interno del proprio Query Store. In sostanza, è presente un archivio delle query condiviso tra la replica primaria e tutte le repliche secondarie. Query Store esiste nella replica primaria e archivia i dati per tutte le repliche insieme. Attualmente, Query Store per le repliche secondarie è disponibile con le istanze di SQL Server 2022 (16.x) configurate nei gruppi di disponibilità.
Importante
Query Store è una funzionalità di anteprima per le repliche secondarie. Non è destinato alle distribuzioni di produzione. Consultare: 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 i flag di traccia :
- In Windows avviare Gestione configurazione SQL Server.
- Nell'elenco dei servizi di SQL Server , fare clic con il pulsante destro del mouse sul servizio dell'istanza di SQL Server per l'istanza di SQL Server 2022 (16.x). Selezionare Proprietà.
- Selezionare la scheda parametri di avvio. Nel campo Specificare un parametro di avvio:, aggiungere i valori:
-T12606
e selezionare Aggiungi. - Il servizio di istanza di SQL Server deve essere riavviato prima di rendere effettive le modifiche.
Abilitare Query Store per le repliche secondarie
Prima di usare Query Store per le repliche secondarie in un'istanza di SQL Server, è necessario disporre di un gruppo di disponibilità AlwaysOn . Abilita quindi il Query Store per le repliche secondarie utilizzando le opzioni ALTER DATABASE SET (Transact-SQL).
Se Query Store non è già abilitato e in modalità READ_WRITE nella replica primaria, è necessario abilitarlo 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. Attualmente, quando il Query Store per le repliche secondarie è abilitato, è abilitato per tutte le repliche secondarie.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
Per disabilitare Query Store in 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 della query sys.database_query_store_options indicano che il Query Store si trova nello stato READ_CAPTURE_SECONDARY per il secondario. Il 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.
stato_desiderato | descrizione_stato_desiderato | stato_attuale | actual_state_desc | motivo_solo_lettura |
---|---|---|---|---|
4 | LEGGI_CATTURA_SECONDARIO | 4 | LEGGI_ACQUISIZIONE_SECONDARIA | 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
Attualmente, quando Query Store per le repliche secondarie è abilitato, è abilitato per tutte le repliche secondarie.
Un set di repliche viene definito come tutte le repliche senza nome che condividono un ruolo (primario, secondario, secondario geografico, primario geografico), oppure come replica nominata singolarmente. 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 per 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, causando l'aumento delle dimensioni di Query Store.
Pertanto, quando un sistema è sotto carico significativo, è possibile notare un rallentamento a causa dell'overload del canale. Inoltre, gli stessi problemi di acquisizione di query ad hoc che esistono oggi per Query Store continueranno a verificarsi nei carichi di lavoro eseguiti nelle repliche secondarie. Scopri di più su come mantenere i dati più rilevanti in Query Store.
Vedere anche
- ALTER DATABASE SET opzioni (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)