Query Store voor secundaire replica's
SQL Server 2022 (16.x)
De functie Query Store voor secundaire replica's maakt dezelfde Query Store-functionaliteit mogelijk voor secundaire replicaworkloads die beschikbaar zijn voor primaire replica's. Wanneer Query Store voor secundaire replica's is ingeschakeld, verzenden replica's de queryuitvoeringsgegevens die normaal gesproken in de Query Store worden opgeslagen naar de primaire replica. De primaire replica bewaart de gegevens vervolgens op schijf in een eigen Query Store. In wezen is er één Query Store dat gedeeld wordt tussen de primaire replica en alle secundaire replica's. De Query Store bestaat op de primaire replica en slaat gegevens op voor alle replica's samen. Query Store voor secundaire replica's is momenteel beschikbaar met instanties van SQL Server 2022 (16.x) die zijn geconfigureerd in beschikbaarheidsgroepen.
Belangrijk
Query Store voor secundaire replica's is een preview-functie. Het is niet bedoeld voor productie-implementaties. Zie: releaseopmerkingen SQL Server 2022 (16.0).
U moet traceringsvlag 12606 inschakelen voordat u Query Store kunt inschakelen voor secundaire replica's. Om de traceringsvlaggen in te schakelen:
- In Windows, start SQL Server Configuration Manager.
- Klik in de lijst met SQL Server Servicesmet de rechtermuisknop op de instantieservice van SQL Server voor uw SQL Server 2022 (16.x) instantie. Selecteer eigenschappen.
- Selecteer het tabblad Startparameters. Voeg in het veld Een opstartparameter opgeven: de waarden toe:
-T12606
en selecteer Toevoegen. - De SQL Server-exemplaarservice moet opnieuw worden gestart voordat de wijzigingen van kracht worden.
Query Store inschakelen voor secundaire replica's
Voordat u Query Store gebruikt voor secundaire replica's op een SQL Server-exemplaar, moet u een AlwaysOn-beschikbaarheidsgroep hebben. Schakel vervolgens Query Store in voor secundaire replica's met ALTER DATABASE SET opties (Transact-SQL).
Als Query Store nog niet is ingeschakeld en in READ_WRITE modus op de primaire replica, moet u deze inschakelen voordat u doorgaat. Voer het volgende uit voor elke gewenste database op de primaire replica:
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
Als u Query Store wilt inschakelen op alle secundaire replica's, maakt u verbinding met de primaire replica en voert u het volgende uit voor elke gewenste database. Wanneer Query Store voor secundaire replica's is ingeschakeld, is deze momenteel ingeschakeld voor alle secundaire replica's.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
Als u de Query Store op alle secundaire replica's wilt uitschakelen, maakt u verbinding met de primaire replica en voert u het volgende uit voor elke gewenste database:
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
U kunt controleren of Query Store is ingeschakeld op een secundaire replica door verbinding te maken met de database op de secundaire replica en het volgende uit te voeren:
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
De volgende voorbeeldresultaten van het uitvoeren van query's sys.database_query_store_options geven aan dat de Query Store een READ_CAPTURE_SECONDARY status heeft voor de secundaire. De readonly_reason
van 8
geeft aan dat de query is uitgevoerd op een secundaire replica. Deze resultaten geven aan dat Query Store is ingeschakeld op de secundaire replica.
gewenste_toestand | gewenste_toestand_beschrijving | actuele_staat | actuele_status_beschrijving | alleen-lezen_reden |
---|---|---|---|---|
4 | LEES_OPNAME_SECUNDAIR | 4 | READ_CAPTURE_SECONDARY | 8 |
Zodra deze optie is ingeschakeld, kunt u sys.query_store_replicas gebruiken om de status van de Query Store op de secundaire replica te controleren.
Als u Query Store wilt uitschakelen voor secundaire replica's, maakt u verbinding met de database op de primaire replica en voert u de volgende code uit:
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Replicasets
Momenteel, wanneer Query Store voor secundaire replica's is ingeschakeld, is deze ingeschakeld voor alle secundaire replica's.
Een replicaset wordt gedefinieerd als alle naamloze replica's die dezelfde rol delen (primair, secundair, geo-secundair, geo-primair) of als een afzonderlijke benoemde replica. De gegevens die over query's zijn opgeslagen, kunnen worden geanalyseerd als workloads op basis van een replicaset. Query Store voor replica's biedt de mogelijkheid om de prestaties van specifieke read-only workloads te bewaken en aan te passen die kunnen worden uitgevoerd op secundaire replica's.
Prestatieoverwegingen voor Query Store voor secundaire replica's
Het kanaal dat door secundaire replica's wordt gebruikt om querygegevens terug te sturen naar de primaire replica, is hetzelfde kanaal dat wordt gebruikt om secundaire replica's up-to-date te houden. Gegevens worden opgeslagen in dezelfde tabellen op de primaire replica die Query Store gebruikt voor query's die worden uitgevoerd op de primaire replica, waardoor de grootte van Query Store toeneemt.
Als een systeem onder aanzienlijke belasting valt, merkt u mogelijk enige vertraging omdat het kanaal overbelast is. Bovendien zullen dezelfde problemen met het vastleggen van ad-hocquery's die momenteel bestaan voor Query Store, ook doorgaan voor workloads die op secundaire replica's worden uitgevoerd. Meer informatie over het De meest relevante gegevens in Query Storebewaren.
Zie ook
- OPTIES VOOR 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)