Profile cover photo
Profile photo
Uwe Ricken
106 followers -
Microsoft Certified Master - SQL Server 2008 und MVP SQL Server
Microsoft Certified Master - SQL Server 2008 und MVP SQL Server

106 followers
About
Posts

Post has attachment
In den letzten Wochen bin ich immer wieder auf Abfragen aus Applikationen gestoßen, die als Abfragehinweise OPTIMIZE FOR UNKNOWN verwendet haben. In den untersuchten Applikationen wird diese Technik “inflationär” benutzt. Leider haben die Programmierer bei der Verwendung nicht berücksichtigt, wie schnell diese Option eine Abfrage so schlecht machen kann, dass sie nicht mehr in 2 Sekunden sondern in 7 Minuten ausgeführt wird.

#DensityVector #Histgramm #OPTIMIZEFORUNKNOWN #QueryOptimizer

http://bit.ly/2wemsLZ
Photo
Add a comment...

Post has attachment
Im englischsprachigen Forum für Microsoft SQL Server kam eine Frage auf, in der es darum ging, dass zwei explizite Transaktionen den gleichen Datensatz / Datensätze einer System Versioned Temporal Table ändern wollen. Dabei kommt es zu Konflikten, die schwierig zu lösen sind. Bei den Überlegungen zu einer adäquaten Lösung war schnell klar, wo das Problem liegt – nicht aber, wie man dieses Problem am einfachsten lösen kann. Mit diesem Artikel möchte ich eine Lösungsmöglichkeit anbieten, die mich selbst nicht wirklich überzeugt. Dennoch ist es aus meiner Sicht die – aktuell – einzige Lösung für das Problem.

http://bit.ly/TemporalTables_LongTransactions
Add a comment...

Post has attachment
Bereits zum 3. Mal wurde ich zu einem Notfalleinsatz gerufen, bei dem ein Microsoft SQL Server völlig unerwartet einen Performanceeinbruch hatte. Die üblichen Verdächtigen (Parameter Sniffing, Statistiken, …) konnten nach kurzer Prüfung ausgeschlossen werden. Die weitere Suche brachte dann eine interessante Ursache zu Tage, die ich so bisher noch nie gesehen habe. Wenn eine Datenbank mit READ COMMITTED SNAPSHOT ISOLATION arbeitet, sollte man seinen Applikationscode (auch in SQL Server) gründlich testen!
Add a comment...

Post has attachment
Eine Frage in einem englischsprachigen Forum für Microsoft SQL Server motivierte mich, diesen Artikel über die verschiedenen ISO-Isolationsstufen zu schreiben. Dieser Artikel beschäftigt sich mit der restriktivsten Isolationsstufe – SERIALIZABLE. In einem zuvor geschriebenen Artikel habe ich das Sperrverhalten von SELECT-Statements in den verschiedenen Isolationsstufen beschrieben. Dieser Artikel befasst sich nicht mit den Grundlagen von Isolationsstufen sondern behandelt die besonderen Merkmale.
Add a comment...

Post has attachment
Immer wieder kommt es vor, dass trotz guter Indexierung ein Index nicht optimal genutzt werden kann, da die Suchmuster eine optimale Verwendung eines Index verhindern. Eher durch Zufall bin ich auf einen interessanten Artikel von Fabricio Lima gestoßen, der eine – wie ich finde – interessante Lösung präsentiert, um sogenannte “Wildcard-Suchen” zu optimieren. Hierbei macht er sich den Umstand zu Nutze, dass der CPU-Anteil bei Verwendung von SQL Sortierungen deutlich reduziert wird und somit Abfragen mit Wildcards schneller ausgeführt werden.
Add a comment...

Post has attachment
Ein Kunde beklagte sich über die schlechte Ausführungsgeschwindigkeit einer Funktion, die er von einem Programmierer erhalten hatte. Bei der Durchsicht des Codes der Funktion war das Problem schnell gefunden. Statt eines performanten Indexseek hat die Abfrage einen Indexscan durchgeführt. Ursache für die schlechte Performance war, dass die WHERE-Klausel keine SARGable Argumente verwendete.
Add a comment...

Post has attachment
Häufig fällt auf, dass Datenbankentwickler ihre Abfragen mit Hilfe von Variablen testen. Die Programmiersprachen, wie z. B. C, C++, Basic und Java, besitzen ihre eigenen Variablen zur Aufnahme von Daten und diesen Lösungsansatz möchte man gerne in der Datenbank wiederverwenden. Der gravierende Unterschied zwischen beiden Lösungsansätzen liegt darin, dass Abfragen in Microsoft SQL Server diese Variablen zur Evaluierung der geschätzten Abfragekosten verwenden. Der Artikel beschreibt, warum Variablen für Tests ungeeignet sind und zeigt Alternativen, wie man trotz der Verwendung von Variablen in Testabfragen zuverlässige Auswertungen durchführen kann.
Add a comment...

Post has attachment
Am 14.12.2016 fand zum 6. Mal das Treffen der S.I.G. – SQL Server Internals statt. Dieses – virtuelle – Treffen wurde wie immer aufgezeichnet und kann über den S.I.G.-eigenen Youtube-Channel abgerufen werden. Thema des Treffens war eines meiner Lieblingsthemen – HEAPS.

http://www.db-berater.de/2016/12/special-interest-group-sql-server/
Add a comment...

Post has attachment
Wer täglich mit Microsoft SQL Server arbeitet – sei es als DBA oder als Entwickler – wird sich schon mal mit dem Problem von Parameter Sniffing auseinandergesetzt haben. “Parameter Sniffing” bedeutet, das Microsoft SQL Server beim Ausführen einer Stored Procedure/parameterisierten Abfrage den Übergabeparameter verwendet, um die Kardinalität des Wertes zu bestimmen und zukünftige Ausführungen der Abfrage auf Basis des ERSTEN Übergabeparameters durchführt. Die Kardinalität des Parameters fließt in die Bestimmung der Abfragestrategie mit ein. Die Abfragestrategie wird als Ausführungsplan im Plancache abgelegt. Dieser Artikel beschäftigt sich mit den Problemen, die sich aus dieser Arbeitsweise ergeben und zeigt mögliche Lösungsansätze.
Add a comment...

Post has attachment
In einem Projekt wurde den Entwicklern gesagt, dass man grundsätzlich mit Heaps arbeiten solle, da durch die Verwendung eines Clustered Index viele Deadlocks verursacht worden sein. Daraufhin hat man für fast alle Tabellen in der Datenbank die geclusterten Tabellen wieder zu Heaps gemacht. Die Deadlocks sind laut Aussage vollkommen verschwunden – jedoch hat man ein paar Dinge nicht beachtet, die sich nun nachteilig auf die Performance auswirken; und es sind nicht fehlende Indexe gemeint!
http://www.db-berater.de/2016/08/heaps-in-verbindung-mit-delete-operationen/
Add a comment...
Wait while more posts are being loaded