Microsoft SQL Server 2019

Eintrag zuletzt aktualisiert am: 05.11.2019

Microsoft SQL Server 2019 (interne Versionsnummer 15.0) ist am 4.11.2019 als Nachfolger von Microsoft SQL Server 2017 im Rahmen der Ignite Konferenz erschienen.

Microsoft vermarktet den neuen Server 2019 direkt an mehreren Stellen mit dem Schlagwort "intelligent". Unter dem Oberbegriff "Intelligent Database" findet man in dem Dokument "What's new in SQL Server 2019?" [https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15?view=sql-server-ver15] die Unterrubriken Intelligent Query Processing, In-Memory-Database, Intelligent Performance und Monitoring.
Leistungsverbesserungen

Als Intelligent Query Processing (IQP) bezeichnet Microsoft eine Reihe von Optimierungen bei der Verarbeitung von Abfragen [https://docs.microsoft.com/en-us/sql/relational-databases/performance/intelligent-query-processing?view=sql-server-ver15#approximate-query-processing]. So gibt es nun eine Funktion APPROXCOUNTDISTINCT(expression), die deutlich schneller ist als der Einsatz von COUNT(DISTINCT …), aber nicht ganz exakte Ergebnisse liefert, was bei der Verarbeitung großer Datenmengen in einigen Szenarien ein Kompromiss sein kann.

Als "Intelligent Performance" bezeichnet Microsoft eine Reihe von darüber hinausgehenden Verbesserungen der Ausführungsgeschwindigkeit von Datenbankoperationen. Einige Verbesserungen sind interner Art und ohne Zutun des Nutzers verfügbar (z.B. die Erhöhung der Log Writer Workers [https://blogs.msdn.microsoft.com/bobsql/2019/02/11/sql-server-log-writer-workers/]. Andere Features muss der Datenbankadministrator bzw. Entwickler aktivieren. So kann er nun beim Anlegen eines Index den Zusatz OPTIMIZEFOR_SEQUENTIALKEY, was das Einfügen von Datensätzen in einen Index mit sequentiellen Schlüsselwerten beschleunigt.

Im Bereich der In-Memory-Database, deren erste Features der Hersteller in SQL Server 2014 eingeführte hatte, bietet die 2019er Version nun auch an, die Metadaten der TempDB im RAM zu halten [https://docs.microsoft.com/en-us/sql/relational-databases/databases/tempdb-database?view=sql-server-ver15#memory-optimized-tempdb-metadata].

Mit einem Database Snapshot kann eine Datenbankadministrator eine nicht beschreibbare Momentaufnahme der Datenbank erzeugen, z.B. für eine Auswertung oder einen Bericht. Der Snapshot verbraucht dabei zu Beginn keinen Speicher. Erst wenn die Originaldatenbank sich verändert, muss der Snapshot die Abweichungen vom Original ablegen [https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-snapshots-sql-server?view=sql-server-ver15], um den Nutzer stets die Datenbestand zum Zeitpunkt seiner Erstellung zu liefern.

Monitoring der Ausführungspläne

Im Bereich des Monitorings bietet der SQL Server eine neue Ansicht der letzten Abfrageausführungspläne (Last Query Plan Statistics). Diese Statistik muss der Datenbankadministrator mit der Konfigurationseinstellung LASTQUERY_PLAN_STATS auf Datenbankebene aktivieren. Der Aufruf der Informationen kann dann mit der dynamic management function sys.dm_exec_query_planstats erfolgen.

Die bereits in SQL Server 2014 eingeführte und in SQL Server 2016 verbesserte Lightweight Query Profiling Infrastructure (LWP) wurde verbessert und ist nun im Standard für die Live Query Statistics im SQL Server Management Studio [https://www.sqlshack.com/lightweight-performance-profiling-in-sql-server-2019/ ] aktiviert. Das Feature kann aber über die Datenbankkonfigurationseinstellung LIGHTWEIGHTQUERYPROFILING deaktiviert werden.

Big Data Cluster

Als SQL Server 2019 Big Data Cluster (BDC) bezeichnet Microsoft einen Linux-basierten Container-Verbund aus SQL Server und Apache Spark in Kubernetes oder Azure Kubernetes Services (AKS), jeweils ab Version 1.13 [https://docs.microsoft.com/en-us/sql/big-data-cluster/release-notes-big-data-cluster?view=sql-server-ver15]. Die Speicherung erfolgt im Hadoop Distributed File System (HDFS) auf Basis verschiedener Storage-Provider.

Das in SQL Server 2016 eingeführt Feature "PolyBase" für den Zugriff auf externe Hadoop- und Azure Blog Storage-Datenquellen via T-SQL erweitert Microsoft in SQL Server 2019 um den Zugriff auf Oracle, MongoDB, Terradata und andere SQL Server-Instanzen [https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-guide?view=sql-server-ver15]. Auch einen Connector für ODBC gibt es nun [https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-configure-odbc-generic?view=sql-server-ver15]. Hier spricht Microsoft im Marketing nun von "Data Virtualization".

Bei den Zeichensätzen unterstützt der SQL Server 2018 nun auch UTF-8 bei der Sortierung von Zeichenketten sowie dem Im- und Export von Datensätzen [https://cloudblogs.microsoft.com/sqlserver/2018/12/18/introducing-utf-8-support-in-sql-server-2019-preview/].

Bei der Match-Operation in einer Graph-Datenbank [https://docs.microsoft.com/de-de/sql/t-sql/queries/match-sql-graph?view=sql-server-ver15] ist nun die Funktion SHORTEST_PATH erlaubt. Zudem können erlaubt eine Graph-Datenbank die bisher nur bei relationalen Datenbanken erlaubt Partitionierung von Tabellen und Index.

Java im SQL Server

Mit SQL Server 2019 bietet Microsoft erstmal an, Java-Code innerhalb des Datenbankmanagementservers zu nutzen. Innerhalb eines SQL-Skripts kann der Nutzer die Stored Procedure "spexecute_externalscript" unter Angabe eines Java-Klassennamensnamens
[https://docs.microsoft.com/en-us/sql/language-extensions/how-to/call-java-from-sql?view=sql-server-ver15]. Die auszurufende Java-Klasse muss eine der beiden abstrakten Klassen AbstractSqlServerExtensionExecutor oder AbstractSqlServerExtensionDataset aus dem Microsoft Extensibility SDK for Java for SQL Server implementieren. Das SDK ist Open Source auf Github verfügbar [https://github.com/microsoft/sql-server-language-extensions].

In der Vergangenheit hat der SQL Servers in seinem Inneren nur Transact-SQL (T-SQL) und .NET-Klassen mit C# oder Visual Basic .NET unterstützt. Zukünftig ist die Integration weiterer Programmiersprachen möglich auf Basis der SQL Server Language Extensions [https://docs.microsoft.com/de-de/sql/language-extensions/language-extensions-overview?view=sql-server-ver15].
Sichere Enklaven für verschlüsselte Daten
Seit SQL Server 2016 bietet Microsoft mit Always Encrypted die Verschlüsselung von Daten vom Client bis zum Datenbankmanagementsystem an, sodass selbst Datenbankadministratoren die Daten nicht einsehen können. Dementsprechend war die Datenverarbeitung der verschlüsselten Spalten auf Gleichheitsoperationen beschränkt.

In SQL Server 2019 ergänzt Microsoft mit Secure Enclaves [https://docs.microsoft.com/de-de/sql/relational-databases/security/encryption/always-encrypted-enclaves?view=sql-server-ver15] die Möglichkeit, die verschlüsselten Daten in eine abgetrennten Blackbox auf dem Datenbankserver im Klartext verarbeiten zu können. Es gibt aber keine Möglichkeit, Daten oder Code innerhalb einer solchen Enklave von außen einzusehen, auch nicht mit Datenbankadministratorrechten und einem Debugger.

Schnellere Wiederherstellung

Die Datenbankwiederherstellung beschleunigt Microsoft durch Accelerated Database Recovery (ADR) [https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-and-recovery-overview-sql-server?view=sql-server-ver15#adr]. Durch die Aktivierung dieses Features auf Datenbankebene (ACCELERATEDDATABASERECOVERY) soll auch ein Rollback langlaufender Transaktionen schneller werden.

In einem Blogeintrag betont Microsoft, dass die neuen Features von SQL Server 2019 ohne eine Erhöhung der Lizenzkosten verfügbar sind [https://cloudblogs.microsoft.com/sqlserver/2019/11/04/gain-intelligence-over-data-with-sql-server-2019-now-generally-available/]. Kunden mit einem Software Assurance-Vertrag erhalten zusätzlich kostenfrei Disaster Recovery-Replikate in der Microsoft Azure-Cloud [https://cloudblogs.microsoft.com/sqlserver/2019/10/30/new-high-availability-and-disaster-recovery-benefits-for-sql-server/].