Montag, 24. Februar 2014

Performancevorteile durch Instant File Initialization

Beim Anlegen von Datenbankdateien (Daten, Log) werden standardmäßig die zu erstellenden Dateien beim Initialisieren mit 0 aufgefüllt, damit eventuell auf dem Datenträger zurückgebliebene Daten von vorherigen (gelöschten) Dateien überschrieben werden. Dieses Verfahren betrifft nicht nur das Erstellen neuer Datenbanken sondern auch die Wiederherstellung von Datenbanken aus einem Backup oder die stetige Vergrößerung einer Datenbank. Welchen Einfluss diese Vorgänge auf die Leistung von Microsoft SQL Server hat, beschreibt der nachfolgende Artikel.

Dienstag, 4. Februar 2014

Eigene Systemprozeduren im Kontext der aktuellen Datenbank nutzen

Während der Vorbereitungen zu meinem Vortrag “DMO für die Analyse von Indexen” für die SQL Server Konferenz 2014 in Darmstadt wollte ich es mir einfach machen und eine Stored Procedure für die Ausgabe der Analyse programmieren, die in jeder Benutzerdatenbank verwendet werden kann. Dieser Prozedur wird nur noch der Name des zu analysierenden Objekts sowie die Index Id für die Ausgabe übergeben. Während der Tests gab es jedoch Schwierigkeiten, weil ein Aufruf in der Demo-Datenbank keine Daten lieferte. Die Ursache war schnell gefunden; einige Objekte in der Prozedur wurden im Kontext der master- Datenbank ausgeführt. Wie man eine Prozedur dazu veranlassen kann, dass sie trotz Speicherung in der master-Datenbank immer im Kontext der aktuellen Datenbank ausgeführt wird, zeigt dieser Artikel.

If you pay peanuts …

Beim Stöbern in Projektangeboten, die in den einschlägigen Netzwerken und Projektbörsen angeboten werden, bin ich auf ein Angebot aufmerksam geworden, das ich sehr interessant fand. Die Ausschreibung umfasste die folgenden Merkmale (Auszug):

  • Gewährleistung eines verlässlichen und kosteneffizienten Betriebs der vorhandenen MS SQL Server- Systeme
  • Spezialkenntnisse im Bereich MS SQL Server
  • praktische administrative Erfahrungen im 2nd und 3rd Level Support für MS SQL Server
  • Gute Kenntnisse der MS SQL Server Architektur und Administration, möglichst einschließlich spezieller Features wie Log Shipping, Replikation, DB Mirroring, Cluster und DTS/SSIS

Montag, 3. Februar 2014

Tabellarische Darstellung von IO Statistiken

Mehr durch Zufall bin ich auf eine sehr interessante Webseite gestoßen, die im täglichen Geschäft mit Microsoft SQL Server bei einem DBA / Entwickler nicht fehlen darf. Jeder SQL Experte, der schon einmal Ausführungspläne analysieren musste, ist unweigerlich mit dem I/O konfrontiert worden, das durch die Abfrage generiert wird. Das Ergebnis wird anschließend in einem Meldungsfenster angezeigt. Nun sind die Daten nicht gerade benutzerfreundlich angeordnet und man muss sich mühsam durch das Ergebnis lesen. Die nachfolgende Abfrage – aus AdventureWorks2012 – liefert das folgende Ergebnis für den produzierten I/O:

-- Ausgabe des IO aktivieren
SET STATISTICS IO ON;
 
SELECT  CAST (CONVERT(char(6), h.OrderDate, 112) + '01' AS datetime)    AS OrderMonth,
        SUM(h.TotalDue)                                                 AS TotalAmt,
        COUNT(d.SalesOrderDetailID)                                     AS ProductLines
FROM    sales.SalesOrderHeader h INNER JOIN sales.SalesOrderDetail d
        ON (h.SalesOrderID = d.SalesOrderID)
WHERE   OrderDate >= '20050101' AND
        OrderDate < '20060101'
GROUP BY
        CAST (CONVERT(char(6), h.OrderDate, 112) + '01' AS datetime)
 
-- Ausgabe des IO deaktivieren
SET STATISTICS IO OFF;

Das Ergebnis dieser Abfrage – in Bezug auf IO – ist schlecht lesbar und man muss sich durch die Ergebnisse “quälen”.

IO_UNTABELLARISCH

Um das Ergebnis leichter lesbar und besser aufbereitet zu präsentieren, gibt es von Richie Rump (blog | twitter) eine fantastische Webseite, in die das Ergebnis nur noch in eine dafür vorbereitete Textbox kopiert werden muss. Unter http://www.statisticsioparser.com/statisticsioparser/index.html kann man diesen tollen Parser finden.

IO_TABELLARISCH

Coole Sache. Herzlichen Dank an Richie. Eine – aus meiner Sicht – tolle Entwicklung wenn man nur die Management Konsole für Microsoft SQL Server zur Verfügung hat.

Herzlichen Dank fürs Lesen!