Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Performanceverbesserungen, Diagnosen und Monitoring » Tipps zum Verbessern der Performance » Cachebezogene Performance-Tipps » Performance durch den Einsatz des Cachespeichers steigern

 

Cache und der Speichernutzungswächter

Der SQL Anywhere-Datenbankserver nutzt den Cache (Pufferpool), um Bilder von Datenbankseiten temporär zu speichern (zu puffern). Diese Seiten sind üblicherweise Tabellen- und Indexseiten, auch wenn verschiedene andere Arten von physischen Seiten in einer SQL Anywhere-Datenbank gespeichert werden können. Zusätzlich zu diesen Seiten nutzt der Datenbankserver den Cache für zwei weitere Speicherpools. Einer dieser Pools ist der virtuelle Speicher, der von Datenbankservern für Datenstrukturen verwendet wird, die Verbindungen, Anweisungen und Cursor darstellen. Der zweite Pool besteht aus Cache-Seiten, die als virtueller Speicher für den Abfragespeicher verwendet werden.

Die Abfrageausführung erfordert Speicher für einen effizienten Betrieb. SQL Anywhere verwendet einen Speichernutzungswächter, um festzulegen, wie viel Abfragespeicher jede Anweisung für die Abfrageausführung verwenden darf. Der Speichernutzungswächter ist dafür verantwortlich, einen Pool an Abfragespeicher Anweisungen zuzuweisen, um eine effiziente Ausführung der Systemlast zu gewährleisten.

Der Speichernutzungswächter teilt einzelnen Anweisungen eine ausgewählte Anzahl von Seiten zu, die die Anweisung dann für speicherintensive Abfrageverarbeitungsvorgänge verwenden kann. Der Speicher im Abfragespeicher-Pool steht weiterhin für andere Zwecke (wie Puffern von Tabellen- oder Indexseiten) zur Verfügung, bis der Abfrageprozessor die Seiten verwendet. Zu den speicherintensiven Abfrageverarbeitungsvorgängen, die den Abfragespeicher verwenden, gehören alle Hash-basierten Operatoren, z.B. Hash-Distinct, Hash-Group-By und Hash-Join, sowie Sortierungs- und Fensteroperatoren.

Mithilfe der folgenden Einstellungen, Operatoren und Statistiken können Sie verstehen und steuern, wie der Speichernutzungswächter den Cache verwendet:

  • QueryMemMaxUseful-Operator im grafischen Plan   Wenn eine Anweisung ausgeführt wird, verwendet der Speichernutzungswächter die Schätzungen des Optimierers, um zu bestimmen, wie viel Speicher für die Anweisung sinnvoll (useful) wäre. Diese Schätzung wird im grafischen Plan als QueryMemMaxUseful dargestellt.

  • QueryMemActiveMax-Servereigenschaft   Der Speichernutzungswächter beschränkt die Anzahl der speicherintensiven Anforderungen, die gleichzeitig ausgeführt werden können. Dieser Höchstwert wird basierend auf den Performance-Merkmalen des Computers ermittelt, auf dem der Datenbankserver läuft, und dieses Limit wird mit der Servereigenschaft QueryMemActiveMax angezeigt.

  • QueryMemActiveEst-Systemmonitorstatistik   Der Speichernutzungswächter führt eine laufende Schätzung der Anzahl der gleichzeitigen, speicherintensiven Anforderungen durch. Diese Schätzung ist in Form der Datenbankservereigenschaft bzw. Systemmonitorstatistik QueryMemActiveEst verfügbar.

  • query_mem_timeout-Datenbankoption   Wenn eine speicherintensive Anweisung mit der Ausführung beginnt und bereits die maximale Anzahl von gleichzeitigen speicherintensiven Anforderungen ausgeführt wird, dann warten die eingehenden Anweisungen darauf, dass eine der bestehenden Anforderungen ihren zugewiesenen Speicher freigibt. Die Datenbankoption query_mem_timeout steuert, wie lange die eingehende Anforderung auf eine Speicherzuweisung wartet. Bei der Standardeinstellung -1 wartet die Anforderung für eine im Datenbankserver definierte Zeitspanne. Wenn nach der Wartezeit keine Speicherzuweisung verfügbar ist, wird der Zugriffsplan der Anweisung mit wenig Speicher ausgeführt, was zu einer langsamen Ausführung führen kann, möglicherweise unter Verwendung einer Niedrig-Speicher-Ausführungsstrategie, falls es im Plan eine solche für speicherintensive physische Operatoren gibt.

  • QueryMemGrantWaiting-Servereigenschaft und -Systemmonitorstatistik   Die Datenbankservereigenschaft bzw. Systemmonitorstatistik QueryMemGrantWaiting zeigt die aktuelle Anzahl der Anforderungen, die auf eine Speicherzuweisung warten.

  • QueryMemGrantWaited-Servereigenschaft und -Systemmonitorstatistik   Die Datenbankservereigenschaft bzw. Systemmonitorstatistik QueryMemGrantWaited zeigt, wie viele Male eine Anforderung insgesamt warten musste, bevor eine Speicherzuweisung erteilt wurde.

  • QueryMemNeedsGrant-Operator im grafischen Plan   Im grafischen Plan zeigt der QueryMemNeedsGrant-Operator an, ob der Speichernutzungswächter die Anforderung als einfache Anforderung (keine Speicherzuweisung erforderlich) oder als speicherintensive Anforderung (Speicherzuweisung erforderlich) einstuft. Wenn der Speichernutzungswächter eine Anforderung als einfach klassifiziert, d.h. dass keine Speicherzuweisung erforderlich ist, beginnt die Anforderung umgehend mit der Ausführung. Andernfalls fordert die Anforderung einen Prozentsatz des Abfragespeicher-Pools an.

  • QueryMemLikelyGrant-Operator im grafischen Plan   Der QueryMemLikelyGrant-Operator im grafischen Plan zeigt eine Schätzung an, wie viele Seiten der Anforderung wahrscheinlich für die Ausführung zugewiesen werden.

 Siehe auch