Columnstore-Indizes: ÜbersichtColumnstore indexes: Overview

Gilt für: JaSQL Server JaAzure SQL-Datenbank JaAzure Synapse Analytics (SQL DW) JaParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Columnstore-Indizes stellen den Standard für das Speichern und Abfragen großer Data Warehousing-Faktentabellen dar.Columnstore indexes are the standard for storing and querying large data warehousing fact tables. Dieser Index verwendet spaltenbasierte Datenspeicherung und Abfrageverarbeitung, um bis zu zehnmal höhere Abfrageleistung im Data Warehouse im Vergleich zu herkömmlicher zeilenorientierter Speicherung zu erzielen.This index uses column-based data storage and query processing to achieve gains up to 10 times the query performance in your data warehouse over traditional row-oriented storage. Sie können auch um bis zu zehnmal bessere Datenkompression im Vergleich zur nicht komprimierten Datengröße erreichen.You can also achieve gains up to 10 times the data compression over the uncompressed data size. Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)ermöglichen Columnstore-Indizes die operative Analyse und bieten damit die Möglichkeit, leistungsfähige Echtzeitanalysen von Transaktionsworkloads durchzuführen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), columnstore indexes enable operational analytics: the ability to run performant real-time analytics on a transactional workload.

Erfahren Sie mehr über ähnliche Szenarien:Learn about a related scenario:

Was ist ein Columnstore-Index?What is a columnstore index?

Ein Columnstore-Index ist eine Technologie zum Speichern, Abrufen und Verwalten von Daten mithilfe eines spaltenbasierten Datenformats, das als Columnstore bezeichnet wird.A columnstore index is a technology for storing, retrieving, and managing data by using a columnar data format, called a columnstore.

Hauptbegriffe und -KonzepteKey terms and concepts

Die folgenden Hauptbegriffe und -konzepte werden im Zusammenhang mit Columnstore-Indizes verwendet.The following key terms and concepts are associated with columnstore indexes.

columnstoreColumnstore

Ein Columnstore enthält Daten, die logisch als Tabelle mit Zeilen und Spalten organisiert und physisch in einem Spaltendatenformat gespeichert sind.A columnstore is data that's logically organized as a table with rows and columns, and physically stored in a column-wise data format.

RowstoreRowstore

Ein Rowstore enthält Daten, die logisch als Tabelle mit Zeilen und Spalten organisiert und physisch in einem Zeilendatenformat gespeichert sind.A rowstore is data that's logically organized as a table with rows and columns, and physically stored in a row-wise data format. Dieses Format wird üblicherweise zum Speichern relationaler Tabellendaten verwendet.This format is the traditional way to store relational table data. In SQL ServerSQL Server bezieht sich Rowstore auf die Tabelle, deren zugrunde liegendes Datenspeicherformat ein Heap, ein gruppierter Index oder eine speicheroptimierte Tabelle ist.In SQL ServerSQL Server, rowstore refers to a table where the underlying data storage format is a heap, a clustered index, or a memory-optimized table.

Hinweis

In Zusammenhang mit Columnstore-Indizes bezeichnen die Begriffe „Rowstore“ und „Columnstore“ das Format der Datenspeicherung.In discussions about columnstore indexes, the terms rowstore and columnstore are used to emphasize the format for the data storage.

ZeilengruppeRowgroup

Eine Zeilengruppe ist eine Gruppe von Zeilen, die gleichzeitig im Columnstore-Format komprimiert werden.A rowgroup is a group of rows that are compressed into columnstore format at the same time. Eine Zeilengruppe enthält in der Regel die maximale Anzahl von Zeilen pro Zeilengruppe (d. h. 1.048.576 Zeilen).A rowgroup usually contains the maximum number of rows per rowgroup, which is 1,048,576 rows.

Um eine hohe Leistung und hohe Komprimierungsraten zu erzielen, unterteilt der Columnstore-Index die Tabelle in Zeilengruppen und komprimiert dann jede Zeilengruppe nach Spalten.For high performance and high compression rates, the columnstore index slices the table into rowgroups, and then compresses each rowgroup in a column-wise manner. Die Anzahl der Zeilen in der Zeilengruppe muss groß genug sein, um die Komprimierungsraten zu verbessern, und klein genug, um von In-Memory-Vorgängen profitieren zu können.The number of rows in the rowgroup must be large enough to improve compression rates, and small enough to benefit from in-memory operations.

SpaltensegmentColumn segment

Ein Spaltensegment ist eine Spalte mit Daten aus der Zeilengruppe.A column segment is a column of data from within the rowgroup.

  • Jede Zeilengruppe enthält ein Spaltensegment für jede Spalte in der Tabelle.Each rowgroup contains one column segment for every column in the table.
  • Jedes Spaltensegment wird zusammenhängend komprimiert und auf physischen Medien gespeichert.Each column segment is compressed together and stored on physical media.

Column segmentColumn segment

Gruppierter Columnstore-IndexClustered columnstore index

Ein gruppierter Columnstore-Index ist der physische Speicher für die gesamte Tabelle.A clustered columnstore index is the physical storage for the entire table.

Gruppierter Columnstore-IndexClustered columnstore index

Um die Fragmentierung der Spaltensegmente zu verringern und die Leistung zu verbessern, können einige Daten im Columnstore-Index vorübergehend in einem gruppierten Index (Deltastore) und in einer B-Struktur mit IDs der gelöschten Zeilen gespeichert werden.To reduce fragmentation of the column segments and improve performance, the columnstore index might store some data temporarily into a clustered index called a deltastore and a btree list of IDs for deleted rows. Die Deltastore-Vorgänge werden im Hintergrund verarbeitet.The deltastore operations are handled behind the scenes. Damit die richtigen Abfrageergebnisse zurückgegeben werden, kombiniert der gruppierte Columnstore-Index Abfrageergebnisse aus dem Columnstore und dem Deltastore.To return the correct query results, the clustered columnstore index combines query results from both the columnstore and the deltastore.

DeltazeilengruppeDelta rowgroup

Eine Deltazeilengruppe ist ein gruppierter Index, der nur mit Columnstore-Indizes verwendet wird.A delta rowgroup is a clustered index that's used only with columnstore indexes. Sie verbessert die Columnstore-Komprimierung und -Leistung. Zeilen werden solange gespeichert, bis ein bestimmter Schwellenwert erreicht wird, und dann in den Columnstore verschoben.It improves columnstore compression and performance by storing rows until the number of rows reaches a threshold and are then moved into the columnstore.

Wenn eine Delta-Zeilengruppe die maximale Zeilenanzahl erreicht, wird sie geschlossen.When a delta rowgroup reaches the maximum number of rows, it becomes closed. Ein Tupelverschiebungsvorgang überprüft auf geschlossene Zeilengruppen.A tuple-mover process checks for closed row groups. Wenn der Prozess eine geschlossene Zeilengruppe findet, wird diese komprimiert und im Columnstore-Index gespeichert.If the process finds a closed rowgroup, it compresses the rowgroup and stores it into the columnstore.

DeltastoreDeltastore

Ein Columnstore-Index kann mehr als eine Deltazeilengruppe haben.A columnstore index can have more than one delta rowgroup. Alle Deltazeilengruppen zusammen werden als „Deltastore“ bezeichnet.All of the delta rowgroups are collectively called the deltastore.

Während eines umfassenden Massenladevorgangs werden die meisten Zeilen ohne Umweg über den Deltastore direkt in den Columnstore verschoben.During a large bulk load, most of the rows go directly to the columnstore without passing through the deltastore. Einige Zeilen am Ende des Massenladevorgangs erreichen möglicherweise nicht die notwendige Anzahl für die minimale Größe einer Zeilengruppe von 102.400 Zeilen.Some rows at the end of the bulk load might be too few in number to meet the minimum size of a rowgroup, which is 102,400 rows. In diesem Fall werden die letzten Zeilen in den Deltastore anstatt in den Columnstore verschoben.As a result, the final rows go to the deltastore instead of the columnstore. Bei kleinen Massenladevorgängen mit weniger als 102.400 Zeilen werden alle Zeilen direkt in den Deltastore verschoben.For small bulk loads with less than 102,400 rows, all of the rows go directly to the deltastore.

Nicht gruppierter Columnstore-IndexNonclustered columnstore index

Ein nicht gruppierter Columnstore-Index und ein gruppierter Columnstore-Index haben die gleiche Funktionsweise.A nonclustered columnstore index and a clustered columnstore index function the same. Der Unterschied besteht darin, dass ein nicht gruppierter Index ein sekundärer Index ist, der für eine Rowstore-Tabelle erstellt wird. Ein gruppierter Columnstore-Index hingegen ist der primäre Speicher für die gesamte Tabelle.The difference is that a nonclustered index is a secondary index that's created on a rowstore table, but a clustered columnstore index is the primary storage for the entire table.

Der nicht gruppierte Index enthält eine Kopie eines Teils oder aller Zeilen und Spalten der zugrundeliegenden Tabelle.The nonclustered index contains a copy of part or all of the rows and columns in the underlying table. Der Index ist als mindestens eine Spalte der Tabelle definiert und weist eine optionale Bedingung auf, die zum Filtern der Zeilen dient.The index is defined as one or more columns of the table and has an optional condition that filters the rows.

Ein nicht gruppierter Columnstore-Index ermöglicht operative Echtzeitanalyse, bei der der OLTP-Workload den zugrunde liegenden gruppierten Index verwendet, während die Analyse parallel auf dem Columnstore-Index ausgeführt wird.A nonclustered columnstore index enables real-time operational analytics where the OLTP workload uses the underlying clustered index while analytics run concurrently on the columnstore index. Weitere Informationen finden Sie unter Erste Schritte mit Columnstore für operative Echtzeitanalyse.For more information, see Get started with columnstore for real-time operational analytics.

BatchmodusausführungBatch mode execution

Die Batchmodusausführung ist eine Methode zur Abfrageverarbeitung, die zum gleichzeitigen Abfragen mehrerer Zeilen verwendet wird.Batch mode execution is a query processing method that's used to process multiple rows together. Die Batchmodusausführung ist eng in das Columnstore-Speicherformat integriert und für dieses optimiert.Batch mode execution is closely integrated with, and optimized around, the columnstore storage format. Die Batchmodusausführung wird auch als vektorbasierte oder vektorisierte Ausführung bezeichnet.Batch mode execution is sometimes known as vector-based or vectorized execution. Abfragen von Columnstore-Indizes verwenden die Batchmodusausführung, die die Abfrageleistung in der Regel um das Zwei- bis Vierfache steigert.Queries on columnstore indexes use batch mode execution, which improves query performance typically by two to four times. Weitere Informationen finden Sie im Handbuch zur Architektur der Abfrageverarbeitung.For more information, see the Query processing architecture guide.

Warum sollte ich einen Columnstore-Index verwenden?Why should I use a columnstore index?

Ein Columnstore-Index kann eine sehr hohe Datenkomprimierung bieten, normalerweise etwa zehnfach. Dadurch werden die Speicherkosten für ein Data Warehouse erheblich reduziert.A columnstore index can provide a very high level of data compression, typically by 10 times, to significantly reduce your data warehouse storage cost. Für Analysezwecke bietet der Columnstore-Index eine weitaus bessere Leistung als ein B-Strukturindex.For analytics, a columnstore index offers an order of magnitude better performance than a btree index. Columnstore-Indizes stellen das bevorzugte Datenspeicherformat für Data Warehouse- und Analyseworkloads dar.Columnstore indexes are the preferred data storage format for data warehousing and analytics workloads. Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)können Sie Columnstore-Indizes für Echtzeitanalysen Ihrer Betriebsarbeitsauslastung verwenden.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can use columnstore indexes for real-time analytics on your operational workload.

Gründe für die hohe Geschwindigkeit von Columnstore-Indizes:Reasons why columnstore indexes are so fast:

  • Spalten speichern Werte aus der gleichen Domäne und weisen oft ähnliche Werte auf, was zu hohen Komprimierungsraten führt.Columns store values from the same domain and commonly have similar values, which result in high compression rates. E/A-Engpässe in Ihrem System werden minimiert oder beseitigt, und der Speicherbedarf wird deutlich reduziert.I/O bottlenecks in your system are minimized or eliminated, and memory footprint is reduced significantly.

  • Hohe Komprimierungsraten verbessern die Abfrageleistung, da der Arbeitsspeicherbedarf geringer ist.High compression rates improve query performance by using a smaller in-memory footprint. Auch die Abfrageleistung kann verbessert werden, da SQL ServerSQL Server eine größere Anzahl von speicherinternen Abfrage- und Datenvorgängen ausführen kann.In turn, query performance can improve because SQL ServerSQL Server can perform more query and data operations in memory.

  • Die Batchausführung verbessert die Abfrageleistung, in der Regel um das Zwei- bis Vierfache, indem mehrere Zeilen zusammen verarbeitet werden.Batch execution improves query performance, typically by two to four times, by processing multiple rows together.

  • Bei Abfragen werden häufig nur wenige Spalten aus einer Tabelle ausgewählt, wodurch das Gesamtaufkommen der E/A-Vorgänge für das physische Medium reduziert wird.Queries often select only a few columns from a table, which reduces total I/O from the physical media.

Wann sollte ein Columnstore-Index verwendet werden?When should I use a columnstore index?

Empfohlene Einsatzgebiete:Recommended use cases:

Wie treffe ich die Entscheidung zwischen einem Rowstore-Index und einem Columnstore-Index?How do I choose between a rowstore index and a columnstore index?

Rowstore-Indizes eignen sich am besten für Abfragen, die Daten bei der Suche nach einem bestimmten Wert oder mit einem kleinen Wertebereich durchsuchen.Rowstore indexes perform best on queries that seek into the data, when searching for a particular value, or for queries on a small range of values. Verwenden Sie Rowstore-Indizes für Transaktionsworkloads, da sie tendenziell eher Suchvorgänge in Tabellen als Scans ganzer Tabellen erfordern.Use rowstore indexes with transactional workloads because they tend to require mostly table seeks instead of table scans.

Columnstore-Indizes ermöglichen große Leistungsvorteile bei Analyseabfragen, die große Mengen von Daten durchsuchen, insbesondere bei umfangreichen Tabellen.Columnstore indexes give high performance gains for analytic queries that scan large amounts of data, especially on large tables. Verwenden Sie Columnstore-Indizes für Data Warehouse- und Analyseworkloads, insbesondere für Faktentabellen, da diese eher Scans ganzer Tabellen als Suchvorgänge in Tabellen erfordern.Use columnstore indexes on data warehousing and analytics workloads, especially on fact tables, because they tend to require full table scans rather than table seeks.

Können Rowstore und Columnstore in der gleichen Tabelle kombiniert werden?Can I combine rowstore and columnstore on the same table?

Ja.Yes. Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)können Sie einen aktualisierbaren, nicht gruppierten Columnstore-Index für eine Rowstore-Tabelle erstellen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create an updatable nonclustered columnstore index on a rowstore table. Der Columnstore-Index speichert eine Kopie der ausgewählten Spalten, sodass zusätzlicher Speicherplatz benötigt wird. Allerdings werden die ausgewählten Daten im Durchschnitt um das Zehnfache komprimiert.The columnstore index stores a copy of the selected columns, so you need extra space for this data, but the selected data is compressed on average 10 times. So können Sie Analysen im Columnstore-Index und Transaktionen im Rowstore-Index zur gleichen Zeit ausführen.You can run analytics on the columnstore index and transactions on the rowstore index at the same time. Der Columnstore wird aktualisiert, wenn sich Daten in der Rowstore-Tabelle ändern, daher arbeiten beide Indizes mit den gleichen Daten.The columnstore is updated when data changes in the rowstore table, so both indexes work against the same data.

Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x) können Sie mindestens einen nicht gruppierten Rowstore-Index auf einem Columnstore-Index haben und auf dem zugrunde liegenden Columnstore effiziente Suchen in Tabellen durchführen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can have one or more nonclustered rowstore indexes on a columnstore index and perform efficient table seeks on the underlying columnstore. Auch weitere Optionen werden dadurch verfügbar.Other options become available too. Beispielsweise können Sie eine Primärschlüsseleinschränkung durchsetzen, indem Sie eine UNIQUE-Bedingung auf die Rowstore-Tabelle anwenden.For example, you can enforce a primary key constraint by using a UNIQUE constraint on the rowstore table. Da ein nicht eindeutiger Wert nicht in die Rowstore-Tabelle eingefügt werden kann, kann SQL ServerSQL Server den Wert nicht in den Columnstore einfügen.Because a non-unique value fails to insert into the rowstore table, SQL ServerSQL Server can't insert the value into the columnstore.

MetadatenMetadata

Alle Spalten in einem Columnstore-Index werden in den Metadaten als eingeschlossene Spalten gespeichert.All of the columns in a columnstore index are stored in the metadata as included columns. Der Columnstore-Index hat keine Schlüsselspalten.The columnstore index doesn't have key columns.

sys.indexes (Transact-SQL)sys.indexes (Transact-SQL) sys.index_columns (Transact-SQL)sys.index_columns (Transact-SQL)
sys.partitions (Transact-SQL)sys.partitions (Transact-SQL) sys.internal_partitions (Transact-SQL)sys.internal_partitions (Transact-SQL)
sys.column_store_segments (Transact-SQL)sys.column_store_segments (Transact-SQL) sys.column_store_dictionaries (Transact-SQL)sys.column_store_dictionaries (Transact-SQL)
sys.column_store_row_groups (Transact-SQL)sys.column_store_row_groups (Transact-SQL) sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)
sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)sys.dm_db_column_store_row_group_physical_stats (Transact-SQL) sys.dm_column_store_object_pool (Transact-SQL)sys.dm_column_store_object_pool (Transact-SQL)
sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)sys.dm_db_column_store_row_group_operational_stats (Transact-SQL) sys.dm_db_index_operational_stats (Transact-SQL)sys.dm_db_index_operational_stats (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)sys.dm_db_index_physical_stats (Transact-SQL)

Alle relationalen Tabellen, sofern Sie sie nicht als gruppierten Columnstore-Index festlegen, verwenden Rowstore als zugrundeliegendes Datenformat.All relational tables, unless you specify them as a clustered columnstore index, use rowstore as the underlying data format. CREATE TABLE erstellt eine Rowstore-Tabelle, es sei denn, Sie geben die Option WITH CLUSTERED COLUMNSTORE INDEX an.CREATE TABLE creates a rowstore table unless you specify the WITH CLUSTERED COLUMNSTORE INDEX option.

Beim Erstellen einer Tabelle mit der CREATE TABLE-Anweisung können Sie die Tabelle als Columnstore erstellen, indem Sie die Option WITH CLUSTERED COLUMNSTORE INDEX angeben.When you create a table with the CREATE TABLE statement, you can create the table as a columnstore by specifying the WITH CLUSTERED COLUMNSTORE INDEX option. Wenn Sie bereits über eine Rowstore-Tabelle verfügen, die Sie in einen Columnstore konvertieren möchten, können Sie die Anweisung CREATE COLUMNSTORE INDEX verwenden.If you already have a rowstore table and want to convert it to a columnstore, you can use the CREATE COLUMNSTORE INDEX statement.

TaskTask ReferenzthemenReference topics HinweiseNotes
Erstellen einer Tabelle als Columnstore.Create a table as a columnstore. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)können Sie die Tabelle als gruppierten Columnstore-Index erstellen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create the table as a clustered columnstore index. Sie müssen nicht zuerst eine Rowstore-Tabelle erstellen, die Sie dann in Columnstore konvertieren.You don't have to first create a rowstore table and then convert it to columnstore.
Erstellen Sie eine In-Memory-Tabelle mit einem Columnstore-Index.Create a memory table with a columnstore index. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)können Sie eine speicheroptimierte Tabelle mit einem Columnstore-Index erstellen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create a memory-optimized table with a columnstore index. Der Columnstore-Index kann auch nach dem Erstellen der Tabelle mit der ALTER TABLE ADD INDEX-Syntax hinzugefügt werden.The columnstore index can also be added after the table is created by using the ALTER TABLE ADD INDEX syntax.
Konvertieren einer Rowstore-Tabelle in eine Columnstore-Tabelle.Convert a rowstore table to a columnstore. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) Konvertieren Sie einen vorhandenen Heap oder eine binäre Struktur in einen Columnstore.Convert an existing heap or binary tree to a columnstore. Aus den Beispielen können Sie ersehen, wie vorhandene Indizes und der Name des Index beim Durchführen der Konvertierung behandelt werden.Examples show how to handle existing indexes and also the name of the index when performing this conversion.
Konvertieren einer Columnstore-Tabelle in einen Rowstore.Convert a columnstore table to a rowstore. CREATE CLUSTERED INDEX (Transact-SQL) oder Konvertieren einer Columnstore-Tabelle in einen Rowstore-HeapCREATE CLUSTERED INDEX (Transact-SQL) or Convert a columnstore table back to a rowstore heap In der Regel müssen Sie nicht konvertieren, allerdings kann es vorkommen, dass Sie diese Aktion durchführen müssen.Usually this conversion isn't necessary, but there can be times when you need to convert. Aus den Beispielen ist zu ersehen, wie ein Columnstore in einen Heap oder einen gruppierten Index konvertiert werden kann.Examples show how to convert a columnstore to a heap or clustered index.
Erstellen eines Columnstore-Index für eine Rowstore-Tabelle.Create a columnstore index on a rowstore table. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) Eine Rowstore-Tabelle kann über einen Columnstore-Index verfügen.A rowstore table can have one columnstore index. Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)kann der Columnstore-Index eine Filterbedingung aufweisen.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), the columnstore index can have a filtered condition. In den Beispielen wird die grundlegende Syntax verwendet.Examples show the basic syntax.
Erstellen leistungsfähiger Indizes für Betriebsanalysen.Create performant indexes for operational analytics. Erste Schritte mit Columnstore für operative EchtzeitanalyseGet started with columnstore for real-time operational analytics Beschreibt, wie sich ergänzende Columnstore- und B-Strukturindizes erstellt werden, sodass OLTP-Abfragen die B-Strukturindizes und Analyseabfragen die Columnstore-Indizes verwenden.Describes how to create complementary columnstore and btree indexes, so that OLTP queries use btree indexes and analytics queries use columnstore indexes.
Erstellen leistungsfähiger Columnstore-Indizes für Data WarehousingCreate performant columnstore indexes for data warehousing. Columnstore-Indizes: Data WarehouseColumnstore indexes for data warehousing Beschreibt, wie B-Strukturindizes für Columnstore-Tabellen verwendet werden können, um leistungsstarke Data Warehousing-Abfragen zu erstellen.Describes how to use btree indexes on columnstore tables to create performant data warehousing queries.
Verwenden eines B-Strukturindex zum Durchsetzen einer Primärschlüsseleinschränkung für einen Columnstore-Index.Use a btree index to enforce a primary key constraint on a columnstore index. Columnstore-Indizes: Data WarehouseColumnstore indexes for data warehousing Zeigt, wie B-Struktur- und Columnstore-Indizes kombiniert werden können, um Primärschlüsseleinschränkungen für den Columnstore-Indizes durchzusetzen.Shows how to combine btree and columnstore indexes to enforce primary key constraints on the columnstore index.
Löschen eines Columnstore-Indexes.Drop a columnstore index. DROP INDEX (Transact-SQL)DROP INDEX (Transact-SQL) Beim Löschen eines Columnstore-Indexes wird die standardmäßige DROP INDEX-Syntax verwendet, die auch B-Strukturindizes verwenden.Dropping a columnstore index uses the standard DROP INDEX syntax that btree indexes use. Beim Löschen eines gruppierten Columnstore-Index wird die Columnstore-Tabelle in einen Heap konvertiert.Dropping a clustered columnstore index converts the columnstore table to a heap.
Löschen einer Zeile aus einem Columnstore-Index.Delete a row from a columnstore index. DELETE (Transact-SQL)DELETE (Transact-SQL) Verwenden Sie DELETE (Transact-SQL) zum Löschen einer Zeile.Use DELETE (Transact-SQL) to delete a row.

columnstore row: SQL ServerSQL Server markiert die Zeile als logisch gelöscht, der physische Speicherplatz für die Zeile wird jedoch erst wieder freigegeben, wenn der Index neu erstellt wurde.columnstore row: SQL ServerSQL Server marks the row as logically deleted, but doesn't reclaim the physical storage for the row until the index is rebuilt.

deltastore row: SQL ServerSQL Server löscht die Zeile logisch und physisch.deltastore row: SQL ServerSQL Server logically and physically deletes the row.
Aktualisieren einer Zeile im Columnstore-Index.Update a row in the columnstore index. UPDATE (Transact-SQL)UPDATE (Transact-SQL) Verwenden Sie UPDATE (Transact-SQL) , um eine Zeile zu aktualisieren.Use UPDATE (Transact-SQL) to update a row.

columnstore row: SQL ServerSQL Server markiert die Zeile als logisch gelöscht und fügt die aktualisierte Zeile dann in den Deltastore ein.columnstore row: SQL ServerSQL Server marks the row as logically deleted and then inserts the updated row into the deltastore.

deltastore row: SQL ServerSQL Server aktualisiert die Zeile im Deltastore.deltastore row: SQL ServerSQL Server updates the row in the deltastore.
Laden von Daten in einen Columnstore-Index.Load data into a columnstore index. Columnstore-Indizes: Laden von DatenColumnstore indexes data loading
Durchsetzen, dass alle Zeilen im Deltastore in den Columnstore wechseln.Force all rows in the deltastore to go into the columnstore. ALTER INDEX (Transact-SQL) ... REBUILDALTER INDEX (Transact-SQL) ... REBUILD

Neuorganisieren und Neuerstellen von IndizesReorganize and Rebuild Indexes
ALTER INDEX mit der Option REBUILD erzwingt das Verschieben aller Zeilen in den Columnstore.ALTER INDEX with the REBUILD option forces all rows to go into the columnstore.
Defragmentieren eines Columnstore-Index.Defragment a columnstore index. ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL) ALTER INDEX ... REORGANIZE defragmentiert Columnstore-Indizes online.ALTER INDEX ... REORGANIZE defragments columnstore indexes online.
Zusammenführen von Tabellen mit Columnstore-Indizes.Merge tables with columnstore indexes. MERGE (Transact-SQL)MERGE (Transact-SQL)

Siehe auchSee also

Columnstore-Indizes: Laden von Daten Columnstore indexes data loading
Columnstore-Indizes: Zusammenfassung der Features für Produktversionen Columnstore indexes versioned feature summary
Columnstore-Indizes: Abfrageleistung Columnstore indexes query performance
Erste Schritte mit Columnstore für operative Echtzeitanalyse Get started with columnstore for real-time operational analytics
Columnstore-Indizes: Data Warehouse Columnstore indexes for data warehousing
Columnstore-Index-Defragmentierung Columnstore indexes defragmentation
Leitfaden zum Design von SQL Server-Indizes SQL Server index design guide
Columnstore-Indizes: ArchitekturColumnstore index architecture