Abfrage Leistungseinbußen treten nach dem Ausführen von Datenbankwartung bestimmten regulären Transaktionen in SQL Server 2005

Fehler #: 329155 (SQLBUDT)

Problembeschreibung

Microsoft SQL Server 2005 möglicherweise Abfrage Leistungseinbußen nach Datenbankwartung bestimmten regulären Transaktionen durchführen. Zum Beispiel bemerken Sie eine plötzliche Abnahme der Leistung nach dem Wiederherstellen einer Sicherung.

Ab SQL Server 2005 Service Pack 2 sehen Sie Nachrichten wie im SQL Server-Fehlerprotokoll tritt dieses Problem:
2006-10-15 06:03:29.330 spid59 SQL Server aufgetreten 4 Vorkommen flush Cachestore das "Objekt Plänen" Cachestore (Teil des Plan-Caches) durch einige Datenbank Wartung oder Vorgänge konfigurieren.

2006-10-15 06:03:29.420 spid59 SQL Server aufgetreten 4 Vorkommen flush Cachestore das "SQL Plänen" Cachestore (Teil des Plan-Caches) durch einige Datenbank Wartung oder Vorgänge konfigurieren.
2006-10-15 06:03:29.420 spid59 SQL Server aufgetreten 4 Vorkommen von Cachestore flush 'Strukturen gebunden'-Cachestore (Teil des Plan-Caches) durch einige Datenbank Wartung oder Vorgänge konfigurieren.
Allerdings können Sie den Befehl DBCC FREEPROCCACHE oder den Prozedur-Cache leeren den Befehl DBCC FREESYSTEMCACHE ausführen. Wenn der Prozedur-Cache geleert wird durch einen der folgenden Befehle ausführen, sehen Sie Nachrichten, die in der SQL Server-Fehlerprotokoll folgendermaßen aussehen:
2006-12-14 11:37:03.57 spid53 SQL Server hat 1 Vorkommen von Cachestore für die Cachestore "SQL Plänen" (Teil des Plan-Caches) aufgrund DBCC FREEPROCCACHE' oder 'DBCC FREESYSTEMCACHE flush festgestellt.
2006-12-14 11:37:03.57 spid53 SQL Server hat 1 Vorkommen von Cachestore für die 'Strukturen gebunden' Cachestore (Teil des Plan-Caches) aufgrund DBCC FREEPROCCACHE' oder 'DBCC FREESYSTEMCACHE flush festgestellt.
Daher können Sie das SQL Server-Fehlerprotokoll um festzustellen, ob das Problem durch das Problem verursacht, die in diesem Artikel beschriebenen untersuchen.

Hinweis Dieses Verhalten tritt nicht in Microsoft SQL Server 2008.

Ursache

Dieses Problem tritt auf, weil bestimmte Datenbankwartung oder regulären Transaktionen Prozedur-Cache löschen.

Status

Dieses Verhalten ist entwurfsbedingt.

Weitere Informationen

Gesamte Prozedurcache wird gelöscht, wenn bestimmte Ebene Datenbankoperationen in folgenden Szenarien ausgeführt werden:
  • Eine Datenbank kann AUTO_CLOSE Datenbank auf ON festgelegt. Wenn keine benutzerverbindung verweist auf und die Datenbank verwendet versucht Hintergrundtask zu schließen und die Datenbank automatisch heruntergefahren.
  • Sie führen mehrere Abfragen für eine Datenbank mit Standardoptionen. Anschließend wird die Datenbank gelöscht.
  • Ein Datenbanksnapshot einer Quelldatenbank wird gelöscht.

    Hinweis Datenbanksnapshots werden nur in Microsoft SQL Server 2005 Enterprise Edition verfügbar.
  • Sie ändern den Zustand der Datenbank OFFLINE oder ONLINE.
  • Sie erstellen das Transaktionsprotokoll einer Datenbank erfolgreich neu.
  • Eine Sicherung wiederherstellen.
  • Die DBCC CHECKDB-Anweisung ausführen.

    Hinweis Dies ist nur in Versionen von SQL Server 2005 als SQL Server 2005 SP2. Nach der Installation von SQL Server 2005 SP2 oder höher ist Prozedur-Cache nicht geleert, wenn die DBCC CHECKDB-Anweisung ausführen.
  • Sie trennen eine Datenbank.
  • Sie geben Sie eine der folgenden Optionen beim Ausführen der Anweisung ALTER DATABASE:
    • OFFLINE
    • ONLINE
    • ÄNDERN STANDARD-DATEIGRUPPE
    • MODIFY_NAME
    • DATEIGRUPPE READ_WRITE ÄNDERN
    • SORTIEREN
    • DATEIGRUPPE READ_ONLY ÄNDERN
    • READ_ONLY
    • READ_WRITE
  • Prozedur-Cache wird deaktiviert, wenn eine der folgenden Serveroptionen durch die RECONFIGURE-Anweisung geändert wird:
    • Cross-Db Besitzketten
    • Index erstellen Speicher (KB)
    • Timeout für Remoteabfragen (s)
    • Benutzeroptionen
    • maximale Textgröße (B)
    • Kostenschwelle für Parallelität
    • Max. Grad an Parallelität
    • min Memory per Query (KB)
    • Abfragewartezeit (s)
    • min Server Memory (MB)
    • max Server Memory (MB)
    • Query Governor Cost limit
    Hinweis Prozedurcache wird nicht gelöscht, wenn der tatsächliche Wert nicht ändert oder der neue Wert für die Serverkonfigurationsoption max Server Memory auf 0 festgelegt ist.
Wenn dieses Problem auftritt, stellen Sie folgende Änderung Wenn Sie Systemmonitor zum Sammeln von Daten von SQL Server 2005-Leistungsindikatoren verwenden:
  • Objekt: Prozess
    Indikator: Prozessorzeit (%)
    Instanz: Sqlservr

    Der Wert dieses Leistungsindikators wird durch erhöhte CPU-Aktivität erhöhen. Im Wesentlichen wird der gesamte Prozedur-Cache gelöscht, tritt dieses Problem. Daher müssen nachfolgende Anforderungen zwischengespeichert werden neue Pläne generieren. Dieses Verhalten wird etwas CPU-Aktivität erhöhen.
  • Objekt: SQLServer:Plan-Cache
    Indikator: Anzahl der Cache-Objekte
    Instanz: _Total

    Objekt: SQLServer:Plan-Cache
    Indikator: Cache-Seiten
    Instanz: _Total

    Die Werte dieser Leistungsindikatoren werden abrupt zu verringern.

    Hinweis Für eine benannte Instanz von SQL Server 2005 heißt das Leistungsobjekt MSSQL$InstanceName: Plan-Cache.
  • Objekt: SQLServer: SQL-Statistiken
    Indikator: SQLCompilations/Sek.

    Der Wert dieses Leistungsindikators wird nach diesem Vorfall deutlich.

    Hinweis Für eine benannte Instanz von SQL Server 2005 heißt das Leistungsobjekt MSSQL$InstanceName: SQL-Statistiken.
Wenn SQL Profiler Trace erfassen mit Event CacheRemove bemerken Sie, dass dieses Ereignis mit TextData Spaltenwert generiert wird, wenn dieses Problem auftritt:
"Gesamte Cache leeren"
Eigenschaften

Artikelnummer: 917828 – Letzte Überarbeitung: 17.02.2017 – Revision: 2

Feedback