Optimieren der Leistung mithilfe von In-Memory-Technologien in SQL-DatenbankOptimize performance by using In-Memory technologies in SQL Database

In-Memory-Technologien in Azure SQL-Datenbank können zur Verbesserung der Leistung Ihrer Anwendung beitragen und potenziell Kosten für Ihre Datenbank verringern.In-Memory technologies in Azure SQL Database enable you to improve performance of your application, and potentially reduce cost of your database.

Verwenden von In-Memory-TechnologienWhen to use In-Memory technologies

Durch Verwenden von In-Memory-Technologien in Azure SQL-Datenbank können Sie Leistungsverbesserungen bei verschiedenen Workloads erzielen:By using In-Memory technologies in Azure SQL Database, you can achieve performance improvements with various workloads:

  • Transaktionsverarbeitung (Online Transactional Processing, OLTP), bei der die meisten Anforderungen einen kleineren Satz Daten lesen oder aktualisieren (z.B. CRUD-Vorgänge).Transactional (online transactional processing (OLTP)) where most of the requests read or update smaller set of data (for example, CRUD operations).
  • Analytische Verarbeitung (Online Analytical Processing, OLAP), bei der die meisten Abfragen komplexe Berechnungen für die Berichterstellung umfassen und eine bestimmte Anzahl von Abfragen Daten in vorhandene Tabellen lädt oder daran anfügt (so genanntes Massenladen) oder Daten aus Tabellen löscht.Analytic (online analytical processing (OLAP)) where most of the queries have complex calculations for the reporting purposes, with a certain number of queries that load and append data to the existing tables (so called bulk-load), or delete the data from the tables.
  • Gemischte Verarbeitung (Hybrid Transaction/Analytical Processing, HTAP), bei der sowohl OLTP- als auch OLAP-Abfragen für den gleichen Satz Daten ausgeführt werden.Mixed (hybrid transaction/analytical processing (HTAP)) where both OLTP and OLAP queries are executed on the same set of data.

In-Memory-Technologien können die Leistung dieser Workloads verbessern, indem sie die zu verarbeitenden Daten im Arbeitsspeicher behalten, eine native Kompilierung der Abfragen verwenden oder eine erweiterte Verarbeitung wie z.B. Batchprozesse und SIMD-Anweisungen ausführen, die in der zugrunde liegenden Hardware verfügbar sind.In-memory technologies can improve performance of these workloads by keeping the data that should be processed into the memory, using native compilation of the queries, or advanced processing such as batch processing and SIMD instructions that are available on the underlying hardware.

ÜbersichtOverview

Azure SQL-Datenbank verfügt über die folgenden In-Memory-Technologien:Azure SQL Database has the following In-Memory technologies:

  • In-Memory-OLTP erhöht die Anzahl von Transaktionen pro Sekunde und reduziert die Latenz für die Transaktionsverarbeitung.In-Memory OLTP increases number of transactions per second and reduces latency for transaction processing. Szenarien, die von In-Memory-OLTP profitieren sind: hoher Durchsatz bei der Transaktionsverarbeitung z.B. Handel treiben, Spielen, Datenerfassung von Ereignissen oder IoT-Geräten, Zwischenspeichern, Laden von Daten, temporäre Tabellen und Szenarien mit Tabellenvariablen.Scenarios that benefit from In-Memory OLTP are: high-throughput transaction processing such as trading and gaming, data ingestion from events or IoT devices, caching, data load, and temporary table and table variable scenarios.
  • Gruppierte Columnstore-Indizes reduzieren den Speicherplatzbedarf (bis um das Zehnfache) und verbessern die Leistung für Berichts- und Analyseabfragen.Clustered columnstore indexes reduce your storage footprint (up to 10 times) and improve performance for reporting and analytics queries. Verwenden Sie sie mit Faktentabellen in Ihren Data Marts, um mehr Daten in Ihrer Datenbank zu speichern und die Leistung zu verbessern.You can use it with fact tables in your data marts to fit more data in your database and improve performance. Sie können sie auch mit Verlaufsdaten in der Betriebsdatenbank verwenden, um bis zu zehnmal mehr Daten zu archivieren und abfragen zu können.Also, you can use it with historical data in your operational database to archive and be able to query up to 10 times more data.
  • Nicht gruppierte Columnstore-Indizes für HTAP helfen beim Gewinnen von Einblicken in Echtzeit in Ihr Geschäft, indem Sie die Betriebsdatenbank direkt abfragen, ohne einen aufwendigen ETL-Prozess (Extrahieren, Transformieren, Laden) ausführen zu müssen und darauf zu warten, dass das Data Warehouse aufgefüllt wird.Nonclustered columnstore indexes for HTAP help you to gain real-time insights into your business through querying the operational database directly, without the need to run an expensive extract, transform, and load (ETL) process and wait for the data warehouse to be populated. Nicht geclusterte Columnstore-Indizes sorgen für eine schnelle Ausführung von Analyseabfragen in der OLTP-Datenbank und reduzieren gleichzeitig die Auswirkungen auf die Betriebsworkload.Nonclustered columnstore indexes allow fast execution of analytics queries on the OLTP database, while reducing the impact on the operational workload.
  • Speicheroptimierte geclusterte Columnstore-Indizes für HTAP ermöglichen eine schnelle Transaktionsverarbeitung sowie die sehr schnelle gleichzeitige Ausführung von Analyseabfragen derselben Daten.Memory-optimized clustered columnstore indexes for HTAP enables you to perform fast transaction processing, and to concurrently run analytics queries very quickly on the same data.

Sowohl Columnstore-Indizes als auch In-Memory-OLTP gehören seit 2012 bzw. 2014 zum Funktionsumfang von SQL Server.Both columnstore indexes and In-Memory OLTP have been part of the SQL Server product since 2012 and 2014, respectively. Azure SQL-Datenbank und SQL Server weisen dieselbe Implementierung von In-Memory-Technologien auf.Azure SQL Database and SQL Server share the same implementation of In-Memory technologies. In Zukunft werden neue Funktionen für diese Technologien zunächst in Azure SQL-Datenbank geboten, ehe sie in SQL Server verfügbar sind.Going forward, new capabilities for these technologies are released in Azure SQL Database first, before they are released in SQL Server.

Vorteile der In-Memory-TechnologieBenefits of In-memory technology

Aufgrund der effizienteren Abfrage- und Transaktionsverarbeitung tragen In-Memory-Technologien auch zur Kostensenkung bei.Because of the more efficient query and transaction processing, In-Memory technologies also help you to reduce cost. Sie müssen in der Regel nicht zu einem höheren Datenbanktarif wechseln, um Leistungsvorteile zu erzielen.You typically don't need to upgrade the pricing tier of the database to achieve performance gains. In einigen Fällen können Sie möglicherweise sogar zu einem niedrigen Tarif wechseln und dennoch in den Genuss von Leistungsverbesserungen durch In-Memory-Technologien kommen.In some cases, you might even be able reduce the pricing tier, while still seeing performance improvements with In-Memory technologies.

Hier sind zwei Beispiele dafür, wie In-Memory-OLTP geholfen hat, die Leistung deutlich zu verbessern:Here are two examples of how In-Memory OLTP helped to significantly improve performance:

Hinweis

In-Memory-Technologien sind für Azure SQL-Datenbank in den Tarifen „Premium“ und „Unternehmenskritisch“ sowie in Pools für elastische Datenbanken im Tarif „Premium“ verfügbar.In-Memory technologies are available in Premium and Business Critical tier Azure SQL databases and Premium elastic pools.

Im folgende Video werden potenzielle Leistungsvorteile mit In-Memory-Technologien in Azure SQL-Datenbank erklärt.The following video explains potential performance gains with In-Memory technologies in Azure SQL Database. Denken Sie daran, dass der Leistungsvorteil, den Sie erzielen, stets von vielen Faktoren abhängig ist. Dazu gehören die Art der Workload und Daten, die Zugriffsmuster der Datenbank usw.Remember that the performance gain that you see always depends on many factors, including the nature of the workload and data, access pattern of the database, and so on.

In diesem Artikel werden Aspekte von In-Memory-OLTP und Columnstore-Indizes beschrieben, die spezifisch für Azure SQL-Datenbank sind. Außerdem sind Beispiele aufgeführt:This article describes aspects of In-Memory OLTP and columnstore indexes that are specific to Azure SQL Database and also includes samples:

  • Sie erfahren etwas über die Auswirkung dieser Technologien auf Speicher und die Grenzwerte für die Datengröße.You'll see the impact of these technologies on storage and data size limits.
  • Sie erfahren, wie Sie das Verschieben von Datenbanken, die diese Technologien nutzen, zwischen verschiedenen Tarifen verwalten.You'll see how to manage the movement of databases that use these technologies between the different pricing tiers.
  • Sie sehen zwei Beispiele, die die Verwendung von In-Memory-OLTP und Columnstore-Indizes in Azure SQL-Datenbank veranschaulichen.You'll see two samples that illustrate the use of In-Memory OLTP, as well as columnstore indexes in Azure SQL Database.

Weitere Informationen finden Sie unterFor more information, see:

In-Memory-OLTPIn-memory OLTP

In-Memory-OLTP-Technologie ermöglicht extrem schnelle Datenzugriffsvorgänge, indem sämtliche Daten im Arbeitsspeicher behalten werden.In-memory OLTP technology provides extremely fast data access operations by keeping all data in memory. Die Technologie nutzt auch spezialisierte Indizes, die native Kompilierung von Abfragen sowie latchfreien Datenzugriff zur Verbesserung der Leistung der OLTP-Workload.It also uses specialized indexes, native compilation of queries, and latch-free data-access to improve performance of the OLTP workload. Es gibt zwei Möglichkeiten, die In-Memory-OLTP-Daten zu organisieren:There are two ways to organize your In-Memory OLTP data:

  • Speicheroptimiertes Rowstoreformat, in dem jede Zeile ein separates Arbeitsspeicherobjekt darstellt.Memory-optimized rowstore format where every row is a separate memory object. Dies ist ein klassisches In-Memory-OLTP-Format, das für OLTP-Workloads mit hoher Leistung optimiert ist.This is a classic In-Memory OLTP format optimized for high-performance OLTP workloads. Es gibt zwei Arten von speicheroptimierten Tabellen, die im speicheroptimierten Rowstoreformat verwendet werden können:There are two types of memory-optimized tables that can be used in the memory-optimized rowstore format:
    • Dauerhafte Tabellen (SCHEMA_AND_DATA), bei denen die im Arbeitsspeicher platzierten Zeilen nach einem Serverneustart beibehalten werden.Durable tables (SCHEMA_AND_DATA) where the rows placed in memory are preserved after server restart. Diese Art von Tabellen verhält sich wie herkömmliche Rowstoretabellen, bietet aber die zusätzlichen Vorteile von speicherinternen Optimierungen.This type of tables behaves like a traditional rowstore table with the additional benefits of in-memory optimizations.
    • Nicht dauerhafte Tabellen (SCHEMA_ONLY), bei denen die Zeilen nach einem Neustart nicht beibehalten werden.Non-durable tables (SCHEMA_ONLY) where the rows are not-preserved after restart. Diese Art von Tabelle ist für temporäre Daten (z.B. zum Austausch von temporären Tabellen) oder für Tabellen konzipiert, in die schnell Daten geladen werden müssen, bevor sie in dauerhafte Tabellen verschoben werden (so genannte Stagingtabellen).This type of table is designed for temporary data (for example, replacement of temp tables), or tables where you need to quickly load data before you move it to some persisted table (so called staging tables).
  • Speicheroptimiertes Columnstoreformat, bei dem Daten in Spaltenform organisiert sind.Memory-optimized columnstore format where data is organized in a columnar format. Diese Struktur wurde für HTAP-Szenarien konzipiert, in denen Sie Analyseabfragen in der gleichen Datenstruktur ausführen müssen, in der Ihre OLTP-Workload ausgeführt wird.This structure is designed for HTAP scenarios where you need to run analytic queries on the same data structure where your OLTP workload is running.

Hinweis

Die In-Memory-OLTP-Technologie wurde für Datenstrukturen entwickelt, die vollständig im Arbeitsspeicher verbleiben können.In-Memory OLTP technology is designed for the data structures that can fully reside in memory. Da die In-Memory-Daten nicht auf einen Datenträger ausgelagert werden können, müssen Sie sicherstellen, dass Sie eine Datenbank mit ausreichend Arbeitsspeicher verwenden.Since the In-memory data cannot be offloaded to disk, make sure that you are using database that has enough memory. Weitere Informationen finden Sie unter Datengröße und Speicherkapazität für In-Memory-OLTP.See Data size and storage cap for In-Memory OLTP for more details.

Eine kurze Einführung zu In-Memory-OLTP finden Sie hier: Schnellstart 1: In-Memory-OLTP-Technologien für höhere T-SQL-Leistung (Informationen für den Einstieg).A quick primer on In-Memory OLTP: Quickstart 1: In-Memory OLTP Technologies for Faster T-SQL Performance (another article to help you get started)

Ausführliche Videos zu den Technologien:In-depth videos about the technologies:

Es gibt einen programmgesteuerten Weg, um zu verstehen, ob eine vorhandene Datenbank In-Memory-OLTP unterstützt.There is a programmatic way to understand whether a given database supports In-Memory OLTP. Sie können die folgende Transact-SQL-Abfrage ausführen:You can execute the following Transact-SQL query:

SELECT DatabasePropertyEx(DB_NAME(), 'IsXTPSupported');

Wenn die Abfrage 1 zurückgibt, wird In-Memory-OLTP in dieser Datenbank unterstützt.If the query returns 1, In-Memory OLTP is supported in this database. Die folgenden Abfragen identifizieren alle Objekte, die entfernt werden müssen, damit eine Datenbank auf „Standard“ oder „Basic“ heruntergestuft werden kann:The following queries identify all objects that need to be removed before a database can be downgraded to Standard/Basic:

SELECT * FROM sys.tables WHERE is_memory_optimized=1
SELECT * FROM sys.table_types WHERE is_memory_optimized=1
SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1

Datengröße und Speicherkapazität für In-Memory-OLTPData size and storage cap for In-Memory OLTP

In-Memory-OLTP enthält speicheroptimierte Tabellen, die zum Speichern von Benutzerdaten verwendet werden.In-Memory OLTP includes memory-optimized tables, which are used for storing user data. Diese Tabellen sind müssen in den Arbeitsspeicher passen.These tables are required to fit in memory. Da Sie Arbeitsspeicher direkt im SQL-Datenbank-Dienst verwalten, arbeiten wir mit dem Konzept eines Kontingents für Benutzerdaten.Because you manage memory directly in the SQL Database service, we have the concept of a quota for user data. Dieses Konzept wird als In-Memory-OLTP-Speicher bezeichnet.This idea is referred to as In-Memory OLTP storage.

Jeder unterstützte Einzeldatenbank-Tarif und jeder Tarif für Pools für elastische Datenbanken beinhaltet eine bestimmte Menge an In-Memory-OLTP-Speicher.Each supported single database pricing tier and each elastic pool pricing tier includes a certain amount of In-Memory OLTP storage. Siehe DTU-basierte Ressourceneinschränkungen – Einzeldatenbank, DTU-basierte Ressourceneinschränkungen – Pool für elastische Datenbanken, V-Kern-basierte Ressourceneinschränkungen – Einzeldatenbanken und V-Kern-basierte Ressourceneinschränkungen – Pool für elastische Datenbanken.See DTU-based resource limits - single database, DTU-based resource limits - elastic pools,vCore-based resource limits - single databases and vCore-based resource limits - elastic pools.

Die folgenden Elemente werden bis zu Ihrer In-Memory-OLTP-Speicherkapazitätsobergrenze angerechnet:The following items count toward your In-Memory OLTP storage cap:

  • Aktive Benutzerdatenzeilen in speicheroptimierten Tabellen und Tabellenvariablen.Active user data rows in memory-optimized tables and table variables. Beachten Sie, dass alte Zeilenversionen nicht bis zur Kapazitätsobergrenze angerechnet werden.Note that old row versions don't count toward the cap.
  • Indizes von speicheroptimierten Tabellen.Indexes on memory-optimized tables.
  • Betriebsmehraufwand von ALTER TABLE-Vorgängen.Operational overhead of ALTER TABLE operations.

Wenn Sie die Obergrenze erreichen, erhalten Sie einen Fehler vom Typ „Kontingent aufgebraucht“ und können dann keine Daten mehr einfügen oder aktualisieren.If you hit the cap, you receive an out-of-quota error, and you are no longer able to insert or update data. Eine Lösung dieses Fehlers besteht darin, Daten zu löschen oder zu einem höheren Datenbank- oder Pooltarif zu wechseln.To mitigate this error, delete data or increase the pricing tier of the database or pool.

Weitere Informationen zur Überwachung der In-Memory-OLTP-Speicherverwendung und zum Konfigurieren von Benachrichtigungen, wenn die Obergrenze fast erreicht ist, finden Sie unter Überwachen des In-Memory-OLTP-Speichers.For details about monitoring In-Memory OLTP storage utilization and configuring alerts when you almost hit the cap, see Monitor In-Memory storage.

Hinweis zu Pools für elastische DatenbankenAbout elastic pools

Bei Pools für elastische Datenbanken wird der In-Memory-OLTP-Speicher von allen Datenbanken im Pool gemeinsam genutzt.With elastic pools, the In-Memory OLTP storage is shared across all databases in the pool. Aus diesem Grund kann die Verwendung in einer Datenbank andere Datenbanken möglicherweise beeinträchtigen.Therefore, the usage in one database can potentially affect other databases. Zwei Lösungen dafür sind:Two mitigations for this are:

  • Konfigurieren Sie eine Max-eDTU oder MaxvCore für Datenbanken, die niedriger als die eDTU- oder V-Kern-Anzahl für den ganzen Pool ist.Configure a Max-eDTU or MaxvCore for databases that is lower than the eDTU or vCore count for the pool as a whole. Dieser Maximalwert begrenzt die In-Memory-OLTP-Speichernutzung in jeder Datenbank im Pool auf die Größe, die der eDTU-Anzahl entspricht.This maximum caps the In-Memory OLTP storage utilization, in any database in the pool, to the size that corresponds to the eDTU count.
  • Konfigurieren Sie eine Min-eDTU oder MinvCore, die größer als 0 ist.Configure a Min-eDTU or MinvCore that is greater than 0. Mit diesem Minimalwert wird sichergestellt, dass jede Datenbank im Pool die Menge des In-Memory-OLTP-Speichers zur Verfügung hat, die der konfigurierten Min-eDTU oder vCore entspricht.This minimum guarantees that each database in the pool has the amount of available In-Memory OLTP storage that corresponds to the configured Min-eDTU or vCore.

Ändern der Dienstebenen für Datenbanken, die In-Memory-OLTP-Technologien verwendenChanging service tiers of databases that use In-Memory OLTP technologies

Sie können jederzeit ein Upgrade Ihrer Datenbank oder Instanz auf einen höheren Tarif ausführen, z.B. von „Universell“ zu „Unternehmenskritisch“ (oder von „Standard“ zu „Premium“).You can always upgrade your database or instance to a higher tier, such as from General Purpose to Business Critical (or Standard to Premium). Es steigen nur die verfügbaren Funktionen und Ressourcen.The available functionality and resources only increase.

Ein Downgrade des Tarifs kann sich jedoch nachteilig auf Ihre Datenbank auswirken.But downgrading the tier can negatively impact your database. Die Auswirkungen sind besonders deutlich, wenn Sie von „Unternehmenskritisch“ zu „Universell“ (oder von „Premium“ zu „Standard“ oder „Basic“) herabstufen und Ihre Datenbank In-Memory-OLTP-Objekte enthält.The impact is especially apparent when you downgrade from Business Critical to General Purpose (or Premium to Standard or Basic) when your database contains In-Memory OLTP objects. Speicheroptimierte Tabellen sind nach dem Downgrade nicht mehr verfügbar (auch wenn sie sichtbar bleiben).Memory-optimized tables are unavailable after the downgrade (even if they remain visible). Die gleichen Aspekte gelten, wenn Sie den Tarif eines Pools für elastische Datenbanken herabstufen oder mit einer Datenbank mit In-Memory-Technologien zu einem Pool für elastische Datenbanken im Tarif Standard oder Basic wechseln.The same considerations apply when you're lowering the pricing tier of an elastic pool, or moving a database with In-Memory technologies, into a Standard or Basic elastic pool.

Wichtig

In-Memory-OLTP wird in den Tarifen „Universell“, „Standard“ und „Basic“ nicht unterstützt.In-Memory OLTP isn't supported in the General Purpose, Standard or Basic tier. Daher ist es nicht möglich, eine Datenbank mit In-Memory-OLTP-Objekten in die Tarife „Standard“ oder „Basic“ zu verlagern.Therefore, it isn't possible to move a database that has any In-Memory OLTP objects to the Standard or Basic tier.

Entfernen Sie alle speicheroptimierten Tabellen und Tabellentypen sowie alle nativ kompilierten T-SQL Module, bevor Sie die Datenbank auf den Standard- oder Basic-Tarif herabstufen.Before you downgrade the database to Standard/Basic, remove all memory-optimized tables and table types, as well as all natively compiled T-SQL modules.

Herunterskalieren von Ressourcen im Tarif „Unternehmenskritisch“ : Daten in speicheroptimierten Tabellen müssen in den In-Memory-OLTP-Speicher passen, der dem Tarif der Datenbank oder der verwalteten Instanz zugeordnet oder im Pool für elastische Datenbanken verfügbar ist.Scaling-down resources in Business Critical tier: Data in memory-optimized tables must fit within the In-Memory OLTP storage that is associated with the tier of the database or Managed Instance, or it is available in the elastic pool. Wenn Sie versuchen, in einen niedrigeren Tarif zu wechseln oder die Datenbank in einen Pool zu verschieben, dem nicht genügend In-Memory-OLTP-Speicher zur Verfügung steht, misslingt der Vorgang.If you try to scale-down the tier or move the database into a pool that doesn't have enough available In-Memory OLTP storage, the operation fails.

In-Memory-ColumnstoreIn-memory columnstore

Die In-Memory-Columnstoretechnologie ermöglicht es Ihnen, eine große Datenmenge in Tabellen zu speichern und abzufragen.In-memory columnstore technology is enabling you to store and query a large amount of data in the tables. Die Columnstoretechnologie verwendet ein spaltenbasiertes Datenspeicherformat und Batchabfragen, um eine bis zu 10-mal höhere Abfrageleistung in OLAP-Workloads zu erzielen also herkömmliche zeilenorientierte Speicher.Columnstore technology uses column-based data storage format and batch query processing to achieve gain up to 10 times the query performance in OLAP workloads over traditional row-oriented storage. Sie können im Vergleich zur unkomprimierten Datengröße außerdem eine bis zu 10-mal höhere Datenkomprimierung erzielen.You can also achieve gains up to 10 times the data compression over the uncompressed data size. Es gibt zwei Arten von Columnstoremodellen, die Sie zum Organisieren Ihrer Daten verwenden können:There are two types of columnstore models that you can use to organize your data:

  • Geclusterter Columnstore, in dem alle Daten in einer Tabelle im Spaltenformat organisiert werden.Clustered columnstore where all data in the table is organized in the columnar format. In diesem Modell werden alle Zeilen einer Tabelle in einem Spaltenformat platziert, das die Daten stark komprimiert und Ihnen eine schnelle Ausführung von Analyseabfragen und -berichten in der Tabelle ermöglicht.In this model, all rows in the table are placed in columnar format that highly compresses the data and enables you to execute fast analytical queries and reports on the table. Je nach Art Ihrer Daten kann das Datenvolumen um das 10- bis 100-Fache reduziert werden.Depending on the nature of your data, the size of your data might be decreased 10x-100x. Das Modell mit Columnstoreclustern ermöglicht auch das schnelle Erfassen großer Datenmengen (Massenladen), da große Datenbatches mit mehr als 100.000 Zeilen vor dem Speichern auf dem Datenträger komprimiert werden.Clustered columnstore model also enables fast ingestion of large amount of data (bulk-load) since large batches of data greater than 100K rows are compressed before they are stored on disk. Dieses Modell eignet sich gut für Szenarien mit klassischen Data Warehouses.This model is a good choice for the classic data warehouse scenarios.
  • Nicht geclusterter Columnstore, bei dem die Daten in herkömmlichen Rowstoretabellen gespeichert sind und ein Index im Columnstoreformat vorliegt, der für die Analyseabfragen verwendet wird.Non-clustered columnstore where the data is stored in traditional rowstore table and there is an index in the columnstore format that is used for the analytical queries. Dieses Modell ermöglicht Hybrid Transactional-Analytic Processing (HTAP): die Möglichkeit, leistungsfähige Echtzeitanalysen für eine Transaktionsworkload auszuführen.This model enables Hybrid Transactional-Analytic Processing (HTAP): the ability to run performant real-time analytics on a transactional workload. OLTP-Abfragen werden in einer Rowstoretabelle ausgeführt, die für den Zugriff auf eine kleine Menge an Zeilen optimiert ist. OLAP-Abfragen dagegen werden in einem Columnstore-Index ausgeführt, der sich für Überprüfungen und Analysen besser eignet.OLTP queries are executed on rowstore table that is optimized for accessing a small set of rows, while OLAP queries are executed on columnstore index that is better choice for scans and analytics. Der Azure SQL-Datenbank-Abfrageoptimierer wählt das Rowstore- oder Columnstoreformat dynamisch basierend auf der jeweiligen Abfrage aus.Azure SQL Database Query optimizer dynamically chooses rowstore or columnstore format based on the query. Nicht geclusterte Columnstore-Indizes verringern die Größe der Daten nicht, da das ursprüngliche Dataset ohne Änderung in der ursprünglichen Rowstoretabelle beibehalten wird.Non-clustered columnstore indexes don't decrease the size of the data since original data-set is kept in the original rowstore table without any change. Der zusätzliche Columnstore-Index sollte sich jedoch in einer Größenordnung befinden, die kleiner ist als der entsprechende B-Struktur-Index.However, the size of additional columnstore index should be in order of magnitude smaller than the equivalent B-tree index.

Hinweis

Die In-Memory-Columnstoretechnologie speichert nur die für die Verarbeitung erforderlichen Daten im Arbeitsspeicher. Daten, die nicht in den Arbeitsspeicher passen, werden auf einem Datenträger gespeichert.In-memory columnstore technology keeps only the data that is needed for processing in the memory, while the data that cannot fit into the memory is stored on-disk. Aus diesem Grund kann die Datenmenge in In-Memory-Columnstorestrukturen die Größe des verfügbaren Arbeitsspeichers überschreiten.Therefore, the amount of data in In-memory columnstore structures can exceed the amount of available memory.

Ausführliche Videos zur Technologie:In-depth video about the technology:

Datengröße und Speicher für Columnstore-IndizesData size and storage for columnstore indexes

Columnstore-Indizes brauchen nicht in den Arbeitsspeicher zu passen.Columnstore indexes aren't required to fit in memory. Deshalb ist die einzige Begrenzung der Indexgröße die maximale Gesamtgröße der Datenbank, was in den Artikeln DTU-basiertes Kaufmodell und vCore-basiertes Kaufmodell dokumentiert ist.Therefore, the only cap on the size of the indexes is the maximum overall database size, which is documented in the DTU-based purchasing model and vCore-based purchasing model articles.

Wenn Sie gruppierte Columnstore-Indizes verwenden, wird eine Spaltenkomprimierung für den Basistabellenspeicher verwendet.When you use clustered columnstore indexes, columnar compression is used for the base table storage. Durch diese Komprimierung kann der Speicherbedarf Ihrer Benutzerdaten erheblich reduziert werden, d.h., Sie können mehr Daten in der Datenbank speichern.This compression can significantly reduce the storage footprint of your user data, which means that you can fit more data in the database. Die Komprimierung kann außerdem mit spaltenorientierter Archivierungskomprimierung noch weiter erhöht werden.And the compression can be further increased with columnar archival compression. Der Grad der Komprimierung, die Sie erreichen können, hängt von der Art der Daten ab, jedoch ist eine zehnfache Komprimierung nicht ungewöhnlich.The amount of compression that you can achieve depends on the nature of the data, but 10 times the compression is not uncommon.

Wenn Sie z.B. eine Datenbank mit einer maximalen Größe von 1 Terabyte (TB) haben und mithilfe von Columnstore-Indizes eine zehnfache Komprimierung erreichen, können Sie insgesamt 10 TB Benutzerdaten in der Datenbank speichern.For example, if you have a database with a maximum size of 1 terabyte (TB) and you achieve 10 times the compression by using columnstore indexes, you can fit a total of 10 TB of user data in the database.

Bei Verwendung von nicht gruppierten Columnstore-Indizes wird die Basistabelle weiterhin im herkömmlichen Rowstore-Format gespeichert.When you use nonclustered columnstore indexes, the base table is still stored in the traditional rowstore format. Aus diesem Grund sind die Speichereinsparungen nicht so groß wie bei gruppierten Columnstore-Indizes.Therefore, the storage savings aren't as big as with clustered columnstore indexes. Wenn Sie jedoch mehrere herkömmliche nicht gruppierte Indizes durch einen einzelnen Columnstore-Index ersetzen, können Sie dennoch allgemeine Einsparungen beim Speicherbedarf für die Tabelle erzielen.However, if you're replacing a number of traditional nonclustered indexes with a single columnstore index, you can still see an overall savings in the storage footprint for the table.

Ändern der Dienstebenen für Datenbanken mit Columnstore-IndizesChanging service tiers of databases containing Columnstore indexes

Das Herabstufen einer Einzeldatenbank auf die Tarife „Basic“ oder „Standard“ ist eventuell nicht möglich, wenn der angestrebte Tarif unter S3 liegt.Downgrading single database to Basic or Standard might not be possible if your target tier is below S3. Columnstore-Indizes werden nur in den Tarifen „Unternehmenskritisch“ und „Premium“ sowie in den Standard-Tarifen S3 und höher unterstützt, nicht jedoch im Basic-Tarif.Columnstore indexes are supported only on the Business Critical/Premium pricing tier and on the Standard tier, S3 and above, and not on the Basic tier. Nach dem Herabstufen Ihrer Datenbank auf einen nicht unterstützten Tarif bzw. auf eine nicht unterstützte Ebene ist der Columnstore-Index nicht mehr verfügbar.When you downgrade your database to an unsupported tier or level, your columnstore index becomes unavailable. Das System verwaltet den Columnstore-Index, nutzt den Index jedoch nie.The system maintains your columnstore index, but it never leverages the index. Wenn Sie später wieder auf einen unterstützten Tarif bzw. auf eine unterstützte Ebene heraufstufen, kann der Columnstore-Index sofort wieder genutzt werden.If you later upgrade back to a supported tier or level, your columnstore index is immediately ready to be leveraged again.

Wenn Sie über einen gruppierten Columnstore-Index verfügen, ist die gesamte Tabelle nach dem Downgrade nicht mehr verfügbar.If you have a clustered columnstore index, the whole table becomes unavailable after the downgrade. Aus diesem Grund wird empfohlen, alle gruppierten Columnstore-Indizes vor dem Herabstufen Ihrer Datenbank auf einen nicht unterstützten Tarif bzw. auf eine nicht unterstützte Ebene zu löschen.Therefore we recommend that you drop all clustered columnstore indexes before you downgrade your database to an unsupported tier or level.

Hinweis

Verwaltete Azure SQL-Datenbank-Instanz unterstützt Columnstore-Indizes in allen Tarifen.Managed Instance supports ColumnStore indexes in all tiers.

Nächste SchritteNext steps

Zusätzliche RessourcenAdditional resources

Weiterführende InformationenDeeper information

AnwendungsentwurfApplication design

ToolsTools