SSAS: In-Memory vs. Live-Query-Abfragen
Für tabulare Modelle kennt die SQL Server Analysis Services (SSAS) verschiedene Abfrage-Modi. Welche? Das erfahren Sie in diesem Artikel, Vor- und Nachteile inklusive. So entscheiden Sie einfacher, welche Art von Abfrage am besten zu Ihren Anforderungen passt.
Abfrage-Modi bei SSAS
- DirectQuery
- In-Memory
- In-Memory with DirectQuery
- DirectQuery with In-Memory
Der Query Mode definiert die Quelle, von der die Daten ausgewertet werden. Dies beeinflusst sowohl den Ressourcenverbrauch als auch die Geschwindigkeit, mit der die Daten bereitgestellt werden.
Die einzelnen Abfragen: Definitionen, Vor- & Nachteile
In-Memory
In-Memory Abfragen sind der Standard für die meisten Modelle. Dabei liegen alle Daten im Speicher, also direkt im SSAS.
Vorteile
- sehr schnelle Berechnung von Measures
- rasche Ausführung von weiteren Berechnungen
Nachteile
- Aktualisierung nur dann, wenn von außen angestoßen (nicht live aus Datenquelle)
- Daten aus dem Speicher gelangen nur auf die Platte, wenn der Server herunterfährt
- Zeitfaktor: sowohl beim Runter- als auch Hochfahren dauert es, bis Daten im Speicher sind
- ausreichend Speicherplatz notwendig, um Daten dort zu halten
DirectQuery
Bei DirectQuery bleiben die Daten direkt in der relationalen Quelldatenbank. Alle Abfragen und Berechnungen werden in SQL transformiert und am Quell-Server ausgeführt.
Vorteile
- Verarbeitung auch solcher Daten, die mehr Speicher benötigen, als RAM vorhanden ist
- Unterstützung des Servers mit SQL Boardmitteln (z.B. Indizes) bei Abfrage
Nachteile
- keine Unterstützung von MDX-Abfragen (relevant v.a. bei direktem Zugriff auf Excel, da MDX dafür notwendig ist)
- Anbindung von nur einer Datenbank möglich
- keine Unterstützung von berechneten Spalten und einigen DAX-Funktionen
- geringe Geschwindigkeit, da Daten jedes Mal neu laden
Hybrid-Modi
1. In-Memory with DirectQuery
Beim hybriden Modus “In-Memory with DirectQuery” entscheidet der Client selbst: Soll In-Memory oder DirectQuery die Abfrage bedienen? Default ist stets In-Memory.
2. DirectQuery with In-Memory
Auch hierbei handelt es sich um einen Hybrid. Allerdings ist der Default DirectQuery und der Client kann auf In-Memory umschalten.
Vorteil von Hybridmodi
Der große Vorteil von Hybridmodi ist die Anwendung von verschiedenen Konfigurationen. So fragen Sie beispielsweise für bestimmte Partitionen die Daten per In-Memory ab. Und für Daten einer anderen Partition derselben Tabelle wenden Sie Direct-Query an. Vor allem für Daten, die selten benötigt oder sehr häufig aktualisiert werden, ist Direct-Query von Vorteil.
Anmerkung: unterschiedliche Ergebnisse
Gleiche Abfrage, verschiedene Ergebnisse? Das ist möglich. Und zwar, wenn Sie unterschiedliche Abfragemodi verwenden. So können die Ergebnisse variieren, wenn Sie die gleiche Abfrage einmal per In-Memory, und einmal mittels Direct-Query Modus stellen.
Warum ist das so?
Die Datengrundlage ist unter Umständen eine andere. Das liegt daran, dass DirectQuery die Daten live aus der Datenquelle bezieht, In-Memory allerdings nicht.
Zusammenfassung
Wann ist also einer der beiden Basis-Modi, wann ein Hybdridmodus sinnvoll? Das hängt stark von folgenden beiden Punkten ab:
- vorhandene Ressourcen
- Anforderungen an Geschwindigkeit & Aktualität
Eine allgemeine Empfehlung ist demnach nicht möglich. Jeder Fall ist individuell.