Der Abfragespeicher der SQL-Systemdatenbank (Master, Modell, msdb, tempdb) kann nur für msdb verwendet werden. Ich habe nach einer Dokumentation zum Abfragespeicher in msdb gesucht und keine gefunden.
Während Sie es in der GUI nicht sehen können, kann es auf Ihrer SQL 2016-Instanz überprüft werden
Validate Query Store ist deaktiviert
USE msdb
SELECT * FROM sys.database_query_store_options;
Aktivieren Sie den Abfragespeicher
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = ON
GO
ALTER DATABASE msdb SET QUERY_STORE (OPERATION_MODE = READ_WRITE
, INTERVAL_LENGTH_MINUTES = 30
, MAX_STORAGE_SIZE_MB = 1000
, QUERY_CAPTURE_MODE = AUTO)
GO
Validate Query Store ist aktiviert
USE msdb
SELECT * FROM sys.database_query_store_options;
Warum ist msdb von allen Systemdatenbanken die einzige mit der Option, Query Store zu verwenden, und welchen Wert bietet es?
-- Stop Query Store
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = OFF
GO
sql-server
sql-server-2016
msdb
query-store
James Jenkins
quelle
quelle
[model]
, das sich auf die Aufnahme in die Liste "nicht erlaubt" bezieht .Antworten:
Microsoft, das eine Funktion aktiviert, bedeutet nicht, dass sie für alle nützlich ist. Für Systeme, die einige der Funktionen verwenden, kann dies bedeuten, dass Sie sich auf in MSDB gespeicherte Informationen verlassen. In diesen Fällen kann der Abfragespeicher hilfreich sein.
Hier finden Sie einige Artikel zur Verwendung und Optimierung von MSDB-Datenbankobjekten.
msdb Datenbank aus Büchern online.
MSDB Performance Tuning von Geoff N. Hiten
Die Bedeutung der Wartung von MSDB durch Tim Radney, wo er Folgendes erwähnte:
Ich kann sehen, wie der Abfragespeicher bei der Optimierung Ihrer Indizierungsstrategie und beim optimalen Abfragen / Aggrgieren / Löschen einiger in MSDB gespeicherter Informationen helfen kann.
quelle
[msdb]
im Zitat angegebenen Funktionen umfassen die "anderen Prozesse" Dinge wie: dbmail, CMS-Dienste (Central Management Server) (insbesondere freigegebene Listen registrierter Server), ich denke, jemand in den Kommentaren zu diesem verlinkten Beitrag erwähnt Policy Based Management (PBM) und ich denke Server Audits (zumindest die Definitionen, aber ich habe dies nicht bestätigt).@SqlWorldWide hat den "Warum
[msdb]
" -Teil der Frage beantwortet, damit ich das hier nicht dupliziere. Aber zu beantworten das „Warum nicht[master]
,[model]
,[tempdb]
“ Teil der Frage:[tempdb]
ist eine temporäre Speicherung und scheint naturgemäß weder von einer automatisierten Optimierung noch von der Fähigkeit zur Bereitstellung historischer Analysen zu profitieren. Wenn der Abfragespeicher Ausführungsstatistiken für gespeicherte Prozeduren verfolgt, hilft dies hier nicht, wenn die gespeicherten Prozeduren an anderer Stelle vorhanden sind. Während es möglich ist, temporäre gespeicherte Prozeduren zu erstellen, würden lokale temporäre gespeicherte Prozeduren wahrscheinlich nicht davon profitieren, da ihr Name einen eindeutigen Hash-Code enthält, um ähnliche Namen über mehrere Sitzungen hinweg zu trennen. Und während globale temporäre gespeicherte Prozesse über Sitzungen hinweg einen einheitlichen Namen haben, kann angesichts der temporären Natur nicht davon ausgegangen werden, dass globale temporäre gespeicherte Prozesse mit demselben Namen über Sitzungen hinweg (vorausgesetzt, nicht zur gleichen Zeit) sogar denselben Code haben. und kann daher nicht sinnvoll sein /korrelierbare Statistiken.[model]
ist die Vorlage zum Erstellen neuer Datenbanken (einschließlich der Vorlage[tempdb]
, die bei jedem Start / Neustart der SQL Server-Instanz neu erstellt wird). Abfragen werden von hier aus nicht ausgeführt. Ich nehme jedoch an, dass es möglicherweise sinnvoll ist, die Aktivierung des Abfragespeichers hier so zuzulassen, dass er beim Erstellen neuer DBs standardmäßig aktiviert ist. Aber jedoch zu , dass aber das würde bedeuten, Abfrage - Shop aktiviert werden würde[tempdb]
, und das ist einfach albern (siehe Punkt direkt oben).UPDATE:
Woah, Nelly! Ich habe gerade die erste Frage , die zu dieser führte, noch einmal gelesen und etwas Seltsames bemerkt: Es gab nur Fehlermeldungen für
[master]
und[tempdb]
; Es wurde kein Fehler gemeldet[model]
. Es ist möglich, dass das OP diese Fehlermeldung beim Kopieren in die Frage einfach weggelassen hat. Daher habe ich unter SQL Server 2016 SP1-CU7-DDR (13.0.4466.4) Folgendes ausgeführt, um mich selbst davon zu überzeugen:Und die Ergebnisse?
[model]
und[IsQueryStoreEnabledByDefault]
zurückgegeben werden , aber[tempdb]
ist nicht in den Ergebnissen! So wird ein zusätzlicher jedoch auf die ersten beiden „aber“ s, scheint es , dass[model]
kann Abfrage - Shop aktiviert , die a) defaults Abfrage gespeicherter Enablement (ja, es ist ein Wort, Ich habe auch ;-) für neu DBs erstellt, und b) wird für die Neuerstellung[tempdb]
beim Starten des Dienstes ignoriert (daher ist dies keine Hintertür zum Einschalten[tempdb]
).[master]
ist die Hauptsystemdatenbank und Sie sollten hier keinen Code ausführen. Außerdem würden die hier vorhandenen und häufig verwendeten gespeicherten Prozeduren entweder nicht von einer Optimierung profitieren oder im Kontext der Benutzerdatenbank ausgeführt, in der sie aufgerufen werden (dh systemgespeicherte Prozesse, die mit beginnen,sp_
sind ein Sonderfall, in dem sie insgesamt "erscheinen" DBs - müssen nicht vollständig qualifiziert sein[master]..
- und werden so ausgeführt, als ob sie tatsächlich in jeder DB vorhanden wären. Sie werden wahrscheinlich vom Abfragespeicher in den Benutzerdatenbanken verwaltet, in denen sie aufgerufen werden.quelle