Dienstag, 24. Dezember 2013

Frohes Weihnachtsfest und einen guten Rutsch in das Jahr 2014

Ich möchte allen Lesern meines SQL Server Blogs ein frohes und besinnliches Weihnachtsfest wünschen verbunden mit den besten Wünschen für das kommende Jahr 2014. Ich danke allen interessierten Lesern, die dazu beigetragen haben, dass mein Blog in einem Jahr über 30.000 Mal aufgerufen wurde. Ich hoffe, dass die Themen für das Jahr 2013 gut gewählt waren und der eine oder andere “Tipp” in eigene Systeme implementiert werden konnte.

Montag, 23. Dezember 2013

SORT IN TEMPDB – teure (aber vermeidbare) Operation

In der letzten Woche bekam ich während eines Kurzprojekts eine Anfrage auf den Schreibtisch, in dem sich der betroffene Geschäftsbereich bei den SQL Server Administratoren beschwert, dass eine Abfrage mit unterschiedlichen Parameterwerten mal sehr schnell lief und dann wieder sehr langsam die Daten verarbeitete. Zunächst dachte ich an “Parameter Sniffing” jedoch war die Ursache viel komplexer als gedacht.

Freitag, 13. Dezember 2013

ORACLE vs. SQL Server: Wie Werbung blind für die Realität macht!

Die Lektüre eines Whitepaper von ORACLE kann einem tatsächlich die Galle hochkommen lassen ob der vielen tollen Dinge, die ORACLE beherrscht; während der Microsoft SQL Server – scheinbar – nur eine bessere Tabellenkalkulation zu sein scheint (so liest sich dieses Whitepaper zumindest). Über eine Beschreibung bin ich gestolpert, über die ich selbst bereits geschrieben habe – die Behauptung von ORACLE ist schlicht und einfach FALSCH!

Donnerstag, 12. Dezember 2013

Wie alloziert Microsoft SQL Server freien Speicher in einem HEAP?

Diese Frage kam im Zusammenhang mit einem Thread in den Microsoft Foren auf. In der Fragestellung ging es darum, warum Microsoft SQL Server trotz ausreichendem Platz auf einer Datenseite den Platz nicht verwendet hat. Der nachfolgende Artikel beschreibt die Vorgehensweise von Microsoft SQL Server bei der “Suche” nach freiem Speicher in einem HEAP.

Montag, 9. Dezember 2013

JOIN-Operatoren im Detail – NESTED LOOP

In meinen Seminaren zu Microsoft SQL Server werden in Verbindung mit der Optimierung von Ausführungsplänen von Abfragen immer wieder Fragen nach den unterschiedlichen JOIN-Operatoren gestellt und nach welchen Kriterien der Microsoft SQL Server welchen Operator auswählt. In diesem wie den nachfolgenden Artikeln möchte ich diese Operatoren und die Entscheidungswege von Microsoft SQL Server etwas genauer mit Beispielen erläutern.

Freitag, 6. Dezember 2013

Wie Fremdschlüssel-Einschränkungen Ausführungspläne beeinflussen

Für viele Kollegen und Freunde, mit denen ich über Fremdschlüssel und deren Bedeutung für Datenbanken spreche, steht im Vordergrund, dass ein Fremdschlüssel sicherstellt, nur Werte aus einer referenzierten Tabelle zuzulassen. Diese Aussage ist nur bedingt richtig – vielmehr spielt eine Fremdschlüsselbeziehung auch bei Abfragen eine wichtige Rolle, wenn der Abfrage Optimierer seine Arbeit verrichtet.

Mittwoch, 4. Dezember 2013

Wie als Entwickler große Datenmengen testen?

In den letzten Wochen wurde ich zu einem “Notfall” hinzugezogen, bei dessen Problemanalyse es darum ging, dass eine Abfrage für eine einfache Liste (ca. 500.000 betroffene Datenzeilen) sehr langsam ausgeführt wurde. Nachdem wir den Fehler gefunden hatten und die Indexe entsprechend angepasst haben, war der nächste Schritt das Gespräch mit den Entwicklern. Von den Entwicklern haben wir dann folgende – leider immer wieder zu hörende – Aussage bekommen: “Wir haben während unserer Entwicklungsarbeit nicht mit so großen Datenmengen gearbeitet – daher ist uns der Fehler nicht aufgefallen!” Dieser Artikel soll zeigen, wie es auch OHNE große Datenmenge möglich ist, Szenarien mit vielen Datensätzen zu simulieren.