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.

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