eBizTalk - Berichten, Unterhalten, Weiterbilden
Ob Branchendiskurs, Fachartikel oder ein Blick hinter die Unternehmenskulissen: eBizTalk ist die Plattform, die uns auffordert, unsere Leser über Events und Projekte auf dem Laufenden zu halten. Und uns gegenseitig natürlich auch.

SQL Server Konferenz 2018 in Darmstadt

Veröffentlicht am 13.03.2018 von Ireen Raue , SQL Server , Data , Azure

Die SQLPass Deutschland hat dieses Jahr vom 26.-28.02. wieder die SQLKonferenz ausgerichtet. Stattgefunden hat die Veranstaltung im Darmstadium in Darmstadt. Ein Pre- und zwei Konferenztage, die vollgepackt waren mit interessanten und informativen Vorträgen rund um den SQL Server, Azure sowie BI- und Big Data - Themen.

clip_image002Pass Deutschland e.V. ist die deutsche Microsoft Data Platform Community und richtet verschiedene Events rund um dieses Thema aus, unter anderem einmal im Jahr die SQLServer Konferenz. Der Verein ist nicht kommerziell und sieht es als sein Ziel, den Nutzern der Microsoft Data Plattform die notwendigen Mittel zu geben, um die taktischen und strategischen Ziele ihrer Organisation, unter Einsatz der Microsoft Data Plattform zu erreichen. (siehe www.sqlpass.de)

Der Vorstand des Vereins eröffnete dann auch die Konferenz mit einer entsprechenden Keynote. Unter anderem wurden einige der Aussteller und deren Tools vorgestellt. Besonders in Erinnerung geblieben ist mir die Firma DataCore-Software mit dem Tool MaxParallel. Damit wird die IO-Last eines Servers besser auf die zur Verfügung stehenden Kerne aufgeteilt und damit, wie der Name schon sagt, parallelisiert. Das ermöglicht eine Performanceverbesserung ohne jegliche Anpassung der eigenen Anwendung. 

Bei 58 Sessions und fast immer 6 gleichzeitig stattfindenden Vorträgen, fiel es mir bei manchen Slots schon wirklich schwer, mich zu entscheiden und fast immer waren die Sessions sehr informativ und interessant. Das alles hier aufzuführen würde wohl den Rahmen sprengen, deshalb beschränke ich mich auf eine kleine Auswahl, der für mich interessantesten Themen.

Aus dem Business Intelligent (BI) Bereich gab es einen Vortrag zum Power BI Report Server von Wolfgang Straßer. PowerBI.com ist ja bereits seit über 2 Jahren als cloudbasierter Dienst verfügbar, aber nicht jeder möchte seine Reports über die Cloud bereitstellen. Mit der Veröffentlichung des Power BI Report Server (PBIRS) im Juni 2017 wurde ein Teil der Power BI Funktionalität nun auch für das eigene Rechenzentrum und somit die eigenen Server verfügbar gemacht. Dies ermöglicht es, firmenintern Reports abrufbar zu machen. Der Funktionsumfang ist etwas eingeschränkt und die Nutzung muss entsprechend lizenziert sein. Man braucht entweder eine Power BI Premium Lizenz oder eine SQL Server Enterprise Edition mit Software Assurance. Mit dem geplanten Cloud- und on-premises Feature-Gleichstand von Microsoft kann man hier aber vermutlich noch einiges erwarten.

Ein weiterer Vortrag dieser Themenreihe war Power BI und IoT von Markus Raatz. Hier wurden die verschiedenen Streaming Möglichkeiten und deren Visualisierung vorgestellt. Leider geriet der Vortrag etwas kurz, da wir auf Grund eines Feueralarms das Gebäude verlassen mussten.

clip_image002[5]Aus Entwicklersicht war der Vortrag „SQL für alle Lebenslagen“ von Christoph Muthmann sehr spannend. Kurzweilig und mit vielen Beispielen aus dem alltäglichen Leben in der SQL Entwicklung, konnte man sich hier die ein oder andere Idee mitnehmen.

Einige interessante Vorträge gab es außerdem zu Datenbankanalyse und -optimierung. Besonders gut fand ich hier „Database tuning advisor vs. Database management views“ von Torsten Strauss und „Automatische Datenbankoptimierung … Funktioniert das wirklich?“ von Mark Aslan Kuschel.

Dabei ging es vorrangig darum, wie man die Indizierung der Datenbank optimal hält, also herausfindet, welche Indizes fehlen, nicht mehr gebraucht werden oder ineffizient sind. Ab SQL Server 2017 steht dafür eine automatische Datenbankoptimierung zur Verfügung. Genutzt werden dabei die DMV (Datenbank Management Views) und auf deren Grundlage wird über Neuanlage oder Löschen eines Index entschieden. Über die IndexUsage und MissingIndex Views kann man das natürlich auch manuell mit entsprechenden Abfragen ermitteln, aber blindlings ausführen würde ich das nicht. Oft gibt es hier doppelte oder sich überschneidende Vorschläge für neue Indizes und auch bei der Benutzung der Indizes werden nur Ausführungen seit dem letzten Neustart des Servers herangezogen. Ein deutlich besseres Ergebnis erhält man mit Hilfe des Database Tuning Advisors, auch wenn hier etwas mehr Vorbereitung nötig ist, bevor man ein Ergebnis erhält.

Seit SQL Server 2016 gibt es den QueryStore. Eine Live Abfragestatistik mit graphischer Oberfläche, über die ressourcenintensive Queries ausgewertet werden können, was die Analyse und auch Bearbeitung dieser Queries deutlich vereinfacht. Um dieses Feature auch Usern älterer Server Versionen verfügbar zu machen, wurde das Open Source Projekt OpenQueryStore ins Leben gerufen. Einer der Co-Kreatoren William Durkin hat in dieser Session das Design von OQS vorgestellt und in einigen Demos die Feature und auch Grenzen gezeigt. Wenn auch die graphische Oberfläche hier nicht interaktiv ist und einige Schritte per direktem SQL-Befehl gemacht werden müssen, ist das eine super Alternative und die Weiterentwicklung sicher noch nicht abgeschlossen.

clip_image002[7]Im Großen und Ganzen eine gelungene Veranstaltung, aus der ich sehr viel Input mitnehmen konnte und die SQLKonferenz im nächsten Jahr ist schon vorgemerkt.

Tame the Data Monster! Das Maskottchen der SQLPass gab es zur Erinnerung für alle am Ende der Konferenz noch zum Mitnehmen.

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise

Wie mache ich mir die InMemory-Technologie des SQL Server 2014 für bestehende Projekte nutzbar!

Veröffentlicht am 05.03.2018 von Ireen Raue , SQL Server , Data

In einem aktuellen Projekt wurde im Zuge eines Hardwaretausches der SQL Server von 2008 auf 2014 migriert, wobei in diesem ersten Schritt keine funktionalen oder technischen Änderungen an den Datenbanken durchgeführt wurden. Da der SQL Server 2014 aber einige technische Verbesserungen mit sich bringt, soll nun überprüft werden, in wie weit diese für die bestehenden Datenbanken zur Verbesserung der Performance genutzt werden können. Die Ergebnisse meiner Recherche dazu möchte ich hier darstellen.

Wer kennt das nicht…?

  • In eine DB strömen große Datenmengen aus verschiedenen Quellen
  • Erwartet wird eine gute Leseperformance gekoppelt mit periodisch auftretenden Batch Inserts/Updates sowie eine niedrige Latenz
  • Intensive Business Logik, die auf dem DB-Server ausgeführt werden muss

Und diese Liste kann man sicher noch um einiges erweitern. Der SQL Server 2014 verspricht aber mit der neuen InMemory-Technologie, an diesen Stellen helfen zu können.

imageDurch den Übertrag ganzer Tabellen oder auch nur von Teilen einer Tabelle in memoryoptimized tables und die Umwandlung von Transact-SQL Code in Natively compiled Stored Procedures soll sich die Performance deutlich verbessern (siehe Bild unten). Voraussetzung dafür ist aber auf jeden Fall genügend Arbeitsspeicher, da die Daten aus diese Tabellen im Arbeitsspeicher gehalten werden.

Wer wünscht sich das nicht… Benefits von In-Memory OLTP (Online Transaction Processing )

  • Eliminierung von Konflikten
  • Effizientes Einfügen der Data
  • Geringere Wartezeiten
  • Minimierung der Code Ausführungszeiten

Und auch hier ist die Liste, der von Microsoft versprochenen Verbesserung noch erweiterbar. Je nachdem wieviel Daten und auch Prozeduren übertragen werden, wird versprochen:

imageUm das auch bei unserem Projekt einsetzten zu können, habe ich mich durch einige Microsoft-Seiten gelesen (die Linksliste befindet sich unter diesem Beitrag) und versucht auf kompakte Weise einen für uns und wahrscheinlich auch für viele andere Projekte machbaren Weg zur Analyse und evtl. Umsetzung zu finden. Eine Vorab-Analyse ist sehr wichtig, da nicht alle Tabellen und Prozeduren für einen Übertrag geeignet sind. In manchen Projekten kann das Ergebnis dieser Analyse auch sein, dass ein Einsatz der InMemory-Technologie nicht ohne großen Umbauaufwand realisierbar ist. In diesem Fall sollte man immer abwägen, ob die angestrebte Performanceverbesserung den Aufwand tatsächlich gerechtfertigt oder es wert ist.


image

Um eine valide Aussage zur Verbesserung geben zu können, muss man den Vorzustand mit dem Nachzustand vergleichen können. Es ist also unerlässlich ein paar Daten zur Performance zu sammeln.

Für die Analyse der Datenstruktur und möglicher Bottlenecks, die durch inMemory verbessert werden könnten, stehen im SQL ManagementStudio Tools zur Verfügung. Zum einen ist das das ARM-Tool. Hier wird mit Hilfe des Management DataWarehouse eine Analyse der aktuellen Performance der Datenbank gemacht und als Ergebnis gibt es den Transaction Performance Analysis Report.

Das ARM-Tool gibt Vorschläge welche Tabellen und Proceduren für inMemory in Frage kommen, wie hoch die Performanceverbesserung wäre und welchen Migrationsaufwand man bei den Objekten hätte.

Außerdem gibt es noch den Memory Optimization Advisor und Native Compilation Advisor. Damit werden die zur Transformation ausgewählten Objekte auf eventuelle InMemory Unverträglichkeiten überprüft. Was unter anderem dazugehört, habe ich bereits in einem anderen Blogbeitrag beschrieben. (Link zu Blog: SQL Server InMemory).

Im folgenden Bild sind alle Schritte noch mal feiner gegliedert dargestellt.

image

Diese Herangehensweise wird auch so von Microsoft empfohlen und kann unter „Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP“ siehe Linkliste, genauer nachgelesen werden. Dort ist auch sehr gut beschrieben, wie der Data Collector eingerichtet werden kann.

Weiterführende Links:

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise

SQL Server 2016 - Improvements: Temporale Tabellen

Veröffentlicht am 04.08.2017 von Ireen Raue , SQL Server , Custom Development , Data

Am 06.12.2017 und 07.12.2017 fand in Darmstadt die TechSummit von Microsoft statt. Wie auch letztes Jahr, waren wir wieder mit einigen Kollegen vor Ort. In diesem Jahr gab es allerdings im Gegensatz zum letzten Jahr deutlich weniger SQL Server Sessions. Eine davon beschäftigte sich mit den temporalen Tabellen, ein neues Feature des SQL Server 2016, das ich bereits kurz bei den SQL Days in Leipzig kennengelernt habe.

Temporale Tabellen

Es handelt sich dabei um eine aus meiner Sicht sehr nützliche Erweiterung des SQL Server 2016. Hiermit ist ohne größeren Aufwand eine Versionierung und Historisierung der Daten möglich.

clip_image002[7]

Code Snippet

ALTER TABLE dbo.Orders

ADD SysStartTime datetime2 GENERATED ALWAYS AS ROW START

CONSTRAINT P_ValidFromConstraint DEFAULT SYSUTCDATETIME() NOT NULL,

       SysEndTime datetime2 GENERATED ALWAYS AS ROW END

CONSTRAINT P_ValidToConstraint DEFAULT CONVERT (DATETIME2, '9999-12-31 23:59:59.9999999') NOT NULL,

PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)

GO

ALTER TABLE dbo.Orders

SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Orders_History))

GO


Der Tabelle wird ein Start- und Enddatum hinzugefügt und die System-Versionierung muss eingeschaltet werden. Danach wird automatisch bei jeder Änderung ein Historiendatensatz anlegt.

Ein großer Vorteil ist hier auch, dass man über die Originaltabelle Abfrage des Datenstandes zu einem bestimmten Zeitpunkt machen kann, ohne selbst die History-Tabelle zu durchsuchen.


Code Snippet

SELECT * FROM dbo.Orders FOR SYSTEM_TIME AS OF '2016-10-27 15:47:00.3823880'

WHERE orderID = 10248


Allerdings sollte man hier immer ein Auge auf die Datenmenge haben, da diese Art der Versionierung bei häufigen Änderungen der Daten und evtl. auch noch sehr großen Datenmengen je Datenzeile sehr viel Platz benötigt.

Einige Einschränkungen:

Trigger

In die Historie Tabelle kommt das rein, was geändert wurde. Das bedeutet Datenmanipulationen innerhalb des Trigger Aufrufs werden in der Historie Tabelle nicht wiedergespiegelt.

Schemaänderungen

Solange keine Historie Eintrage gemacht wurden, ist das Löschen, Hinzufügen oder Ändern von Spalten uneingeschränkt möglich. Sobald Daten vorhanden sind, funktioniert nur noch das Löschen einer Spalte. Dabei wird die Spalte nicht nur aus der Originaltabelle, sondern auch aus der Historie Tabelle mit allen Daten entfernt.

Index

Um eine Indexierung der Historie Tabelle muss und sollte man sich dann auch selbst kümmern.

CREATE CLUSTERED COLUMNSTORE INDEX IX_OrdersHistory
ON dbo.OrdersHistory
WITH (DROP_EXISTING = ON);

Wer schon mal selbst eine Historisierung bauen musste, weiß sicher genau, wie aufwendig sowas werden kann. Deshalb halte ich diese Erweiterung des SQL Server 2016 für eine der Nützlichsten. Solange man den Plattenplatz im Auge behält oder am Anfang entsprechend mit plant, kann man mit den temporalen Tabellen eine ganze Menge Entwicklungszeit einsparen.

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise

SQL Server 2016 - Improvements: InMemory

Veröffentlicht am 01.05.2017 von Ireen Raue , SQL Server , Custom Development , Data

Seit Juni 2016 steht der SQL Server 2016 zur Verfügung und bringt eine Unmenge an Weiterentwicklungen und Verbesserungen mit sich.

Einen ersten groben Überblick dazu habe ich bei den ‚SQL TechnologieDay SQL Server 2016‘ der ppedv in Leipzig bekommen. Dort wurde sehr kompakt auf die Neuerungen eingegangen. Manche dieser Neuerungen sind sehr interessant und spannend, weshalb ich mich damit etwas intensiver beschäftigt habe.

Sehr viele Verbesserungen gab es vor allem im InMemory-Bereich. Da ich mich aktuell für den SQL Server 2014 mit diesem Thema beschäftige, war das eine der für mich sehr interessanten Neuerungen.

InMemory-Erweiterung

Die erste inMemory-Technologie wurde mit dem SQL Server 2012 mit dem ColumnStore Index eingefügt und von Version zu Version stetig erweitert.

image

Auch die Analyse bestehender Projekte auf Migrationsmöglichkeiten hat sich deutlich vereinfacht. Wo beim SQL Server 2014 noch über ein Data Warehouse und DataCollector eine Datenbasis zum Auswerten aufgebaut werden muss, kann der ARM-Report beim SQL Server2016 direkt auf den Produktivdaten ausgeführt werden. So ist ohne größeren Aufwand eine Analyse möglich.

image

Durch die Aufhebung vieler Einschränkungen bei der Migration zu InMemory-Tabellen oder nativly compiled Procedures wird es mit dem SQL 2016 auch deutlich einfach für bestehende Projekte diese Technologie einzusetzen.

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise