SQL Server: Effektive Abfrageoptimierung

Konzentrieren Sie sich auf die Abfrageoptimierung, um Ihre SQL Server-Leistung wirklich zu optimieren und Arbeitsauslastungen effizient zu verwalten.

Ein Auszug aus "SQL Server DMV Startpaket," Red Gate Books (2010) veröffentlicht.

Glenn Berry, Louis Davidson und Tim Ford

Optimieren von Abfragen ist Herz und Seele SQL Server Leistung zu optimieren. Die typische Arbeitsauslastung von schlecht konzipierte oder ineffizienten Abfragen besteht, erleben Sie Leistungs- und Skalierbarkeitsprobleme. Wenn Ihre Abfragen länger sind, mehr zahlreiche und weitere komplexe als notwendig, sie verbraucht mehr CPU-Ressourcen während der Ausführung.

Folglich auch nehmen längere Ausführungszeit sie. Schlecht gestaltete Abfragen zusammen mit dem fehlgeschlagenen Verbindungsversuch zum richtigen Verwendung von Indizes, stellen führen zu SQL Server lesen mehr Daten als erforderlich ist. Dadurch wird eine offensichtliche Lag in Leistung und Ausführungszeit.

SQL Server Daten aus dem Puffercache liest, wird es als logischen e/A bezeichnet. Dies kann ein kostenträchtiger Vorgang aus Sicht der Leistungsoptimierung sein. Wenn die Daten nicht im Arbeitsspeicher, und muss vom Datenträger gelesen werden (oder wenn Daten geschrieben werden müssen), ist das physische e/A, und es ist sogar noch teurer.

Size Matters

Wenn Sie zahlreiche Fragen, die große Mengen von Daten zurückgeben haben, kann dies auf den Puffercache ungenügenden Arbeitsspeicher führen. Dies führt zu SQL Server Spülung Daten aus dem Cache, was wiederum die Leistung von anderen Abfragen auswirkt.

Die "goldene Regel" gut durchdachte SQL Abfragen ist, keine Daten mehr, als Sie wirklich brauchen zurückgegeben werden. Sie sollten SQL Server durchlaufen die Daten als einige Male wie möglich und Verwenden von Set-basierte Logik zum Manipulieren dieser Daten in der Ergebnismenge, die Sie benötigen.

Analyse und Optimierung von SQL-Anweisungen ist ein "Vorgang"hoher Parallelität". SQL Server werden Pläne für zuvor ausgeführten Abfragen in einem gemeinsam genutzten Speicher nennt den Plan-Cache gespeichert. Wenn Sie eine Abfrage für die Ausführung zu senden, überprüft SQL Server Plan-Cache, um festzustellen, ob es einen vorhandenen Plan verwenden können, um die Abfrage auszuführen. Jedes Mal, wenn es eine Übereinstimmung gefunden wird, anschließend analysiert, optimiert und generiert einen Plan für die Abfrage verfasst. Dies ist eine CPU-intensiver Prozess.

Darüber hinaus übernimmt jedes Mal, wenn dies der Fall, ist SQL Server Riegel an den Plan-Cache, um den entsprechenden Bereich des Arbeitsspeichers von anderen Updates zu schützen. Weitere ad-hoc-, nicht parametrisierten SQL Server Abfragen bedeuten mehr Einfachverwendung Pläne im Cache. Dies führt zu einer Steigerung des Verbrauchs von CPU-Ressourcen und fordernde Riegel während der Analyse. Letztendlich kann es ein nicht skalierbares System führen. Gut entworfene SQL Abfragen werden die Wiederverwendung des Plans fördern ("einmal analysieren, verwenden Sie oft"), so weit wie möglich.

Design mit der Zeit im Auge

Letztlich besteht die Arbeitsauslastung von schlecht entworfene Abfragen, verursacht unnötige i/O-Operationen. Ihre CPU und Speicher-Overhead lähmen und Ausführungszeiten werden langsam. Die Situation wird noch schlimmer als die Anzahl der Benutzer zunimmt. Ihre Anträge werden gezwungen, für den Zugriff auf freigegebenen Ressourcen zu warten, das die nicht ordnungsgemäß entworfenen Abfragen voll auslasten.

Umgekehrt, wenn Sie die Anzahl der einzelnen SQL-Anweisungen minimieren können, die Sie einen bestimmten Auftrag zu erreichen müssen, können Sie auch die Arbeit mit jedem dieser einzelnen SQL Anweisungen minimieren Sie dann. Sie sind viel eher eine schnelle und angemessene SQL Server System verfügen, die ordnungsgemäß als die Anzahl von Benutzern skaliert werden, und die gesamte Arbeitsauslastung wächst.

Ein häufig verwendete Ansatz zur Leistungsoptimierung ist eine "Top 10" Liste der langsamsten Abfragen abrufen, die Teil der Arbeitslast normalen, täglich in Ihrer SQL Server-Instanz und optimieren Sie sie einzeln. Aufspüren von Sitzungen, Anforderungen und Abfragen innerhalb Ihrer Infrastruktur SQL Server, die die ressourcenintensivsten sind, und nehmen Sie die längste Zeit zum Ausführen.

Etwas mehr wissenschaftlicher Ansatz könnte beginnen, auf den unteren Ebenen, die auf der Suche nach bestimmten Bereichen, in denen SQL Server Ressourcenüberlastung auftritt. Überprüfen Sie, wo Prozesse warten ungewöhnlich lange Zeit für eine andere Aktion abgeschlossen ist, bevor Sie fortfahren. Auf diese Weise können Sie herausfinden, ob die wichtigste Komponente der langsamen Ausführungszeit CPU-Zeit (Wenn das System die CPU-gebunden ist) oder Zeit ausgegebene warten auf e/A (Wenn das System e/A-gebundenen ist) und so weiter.

Sie können von dort wieder klicken Sie dann auf die Anforderungen arbeiten, die die Ressourcenkonflikte verursachen. Isoliert die problematischen Abfragen können Sie dann reduziert den Umfang der ausgeführten Arbeit finden. Dies beinhaltet gewöhnlich Abstimmen des SQL-Anweisungen und Abfragen oder das Hinzufügen von Indizes. Wenn alle anderen Versuche scheitern, können Sie die Kapazität erhöhen, durch den Kauf von mehr Speicher/Festplatte/CPU-Leistung.

Glenn Berry

Louis Davidson

Tim Ford

Glenn Berryarbeitet als eine Datenbankarchitekt bei NewsGator Technologies in Denver, Colorado Er ist ein SQL Server-MVP und hat eine ganze Sammlung von Microsoft-Zertifizierungen, einschließlich MCITP, MCDBA, MCSE, MCSD, MCAD und MCTS, was beweist, dass er Tests machen will.

**Louis Davidson**in der IT-Branche wurde 16 Jahre lang als Unternehmensdatenbank Entwickler und Architekten. Er ist seit sechs Jahren ein SQL Server-MVP und hat vier Bücher zum Entwerfen von Datenbanken geschrieben. Derzeit ist er Daten Architekten und manchmal DBA für die Christian Broadcasting Network, Unterstützung der Büros in Virginia Beach, Virginia, und Nashville, Tennessee

**Timothy Ford**ist ein SQL Server-MVP und arbeitet mit SQL Server für mehr als 10 Jahren. Er ist der primäre DBA und Experte für die SQL Server-Plattform für die Gesundheit des Spektrums. Er hat schriftlich über Technologie seit 2007 für eine Vielzahl von Websites und verwaltet seinen eigenen Blog unter thesqlagentman.com, SQL als auch Telearbeit und professionelle Entwicklungsthemen abdecken.

Erfahren Sie mehr über "SQL Server DMV Starter Pack" unter red-gate.com/our-company/about/book-store.

Verwandter Inhalt