Общие сведения об индексах columnstoreColumnstore indexes: Overview

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Индексы columnstore — это стандарт хранения и запрашивания больших объемов данных в таблицах фактов.Columnstore indexes are the standard for storing and querying large data warehousing fact tables. В этом индексе используется хранение данных и обработка запросов по столбцам, что позволяет практически в 10 раз увеличить производительность запросов к хранилищу данных по сравнению с традиционным хранилищем, в котором данные хранятся по строкам,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. и практически в 10 уменьшить размеры данных по сравнению с несжатыми данными.You can also achieve gains up to 10 times the data compression over the uncompressed data size. Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x) индексы columnstore позволяют выполнять операционную аналитику, анализируя транзакционную рабочую нагрузку в режиме реального времени.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.

Дополнительные сведения о связанных сценариях:Learn about a related scenario:

Что такое индекс columnstore?What is a columnstore index?

Индекс columnstore — это технология хранения и получения данных, а также управления ими с помощью формата хранения данных в столбцах, называемого columnstore.A columnstore index is a technology for storing, retrieving, and managing data by using a columnar data format, called a columnstore.

Основные термины и понятияKey terms and concepts

Следующие основные концепции и понятия связаны с индексами columnstore.The following key terms and concepts are associated with columnstore indexes.

columnstoreColumnstore

Columnstore — это данные, логически упорядоченные в виде таблицы, состоящей из строк и столбцов, и физически хранящиеся в формате столбцов.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

Rowstore — это данные, логически упорядоченные в виде таблицы, состоящей из строк и столбцов, и физически хранящиеся в формате строк.A rowstore is data that's logically organized as a table with rows and columns, and physically stored in a row-wise data format. Это стандартный способ хранения реляционных данных таблиц.This format is the traditional way to store relational table data. В SQL ServerSQL Server rowstore — это таблица с базовым форматом хранения данных в виде кучи, кластеризованного индекса или таблицы, оптимизированной для памяти.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.

Примечание

В обсуждениях индексов columnstore для обозначения формата хранения данных используются термины rowstore и columnstore.In discussions about columnstore indexes, the terms rowstore and columnstore are used to emphasize the format for the data storage.

RowgroupRowgroup

Rowgroup — это группа строк, сжимаемых в формате columnstore одновременно.A rowgroup is a group of rows that are compressed into columnstore format at the same time. Rowgroup обычно содержит максимальное возможное число строк — 1 048 576 строк.A rowgroup usually contains the maximum number of rows per rowgroup, which is 1,048,576 rows.

Чтобы добиться высокой производительности и высокого уровня сжатия, индекс columnstore разделяет таблицы на группы rowgroup, каждая из которых затем сжимается на уровне столбцов.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. Число строк в группе строк должно быть достаточно большим, чтобы повысить скорость сжатия, и достаточно малым для использования преимуществ использования операций в памяти.The number of rows in the rowgroup must be large enough to improve compression rates, and small enough to benefit from in-memory operations.

Сегмент столбцаColumn segment

Сегмент столбца — это столбец данных из rowgroup.A column segment is a column of data from within the rowgroup.

  • Каждая rowgroup содержит один сегмент столбца для каждого столбца в таблице.Each rowgroup contains one column segment for every column in the table.
  • Каждый сегмент столбца сжимается одновременно и сохраняется на физическом носителе.Each column segment is compressed together and stored on physical media.

Column segmentColumn segment

Кластеризованный индекс columnstoreClustered columnstore index

Кластеризованный индекс columnstore — это физическое хранилище для всей таблицы.A clustered columnstore index is the physical storage for the entire table.

Кластеризованный индекс columnstoreClustered columnstore index

Чтобы снизить фрагментацию сегментов столбцов и повысить производительность, индекс columnstore может временно сохранять некоторые данные в кластеризованный индекс, который называется deltastore, и использовать для удаленных строк сбалансированное дерево идентификаторов.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. Операции deltastore обрабатываются в фоновом режиме.The deltastore operations are handled behind the scenes. Для получения правильных результатов запросов кластеризованные индексы columnstore объединяют результаты запроса от columnstore и deltastore.To return the correct query results, the clustered columnstore index combines query results from both the columnstore and the deltastore.

Разностная группа строкDelta rowgroup

Разностная группа строк — это кластеризованный индекс, который используется только с индексами columnstore.A delta rowgroup is a clustered index that's used only with columnstore indexes. Она улучшает сжатие и эффективность хранения строк, пока их количество не достигнет предельного значения, а затем переносит строки в индекс columnstore.It improves columnstore compression and performance by storing rows until the number of rows reaches a threshold and are then moved into the columnstore.

Когда объем разностной группы строк достигает максимального числа строк, она закрывается.When a delta rowgroup reaches the maximum number of rows, it becomes closed. Процесс перемещения кортежей выполняет проверку на наличие закрытых групп строк.A tuple-mover process checks for closed row groups. При обнаружении закрытой группы строк она сжимается и сохраняется в columnstore.If the process finds a closed rowgroup, it compresses the rowgroup and stores it into the columnstore.

DeltastoreDeltastore

Индекс columnstore может содержать более одной разностной группы строк.A columnstore index can have more than one delta rowgroup. Все разностные группы строк совокупно называются deltastore.All of the delta rowgroups are collectively called the deltastore.

При крупной массовой загрузке большинство строк переходят непосредственно в columnstore без промежуточного помещения в deltastore.During a large bulk load, most of the rows go directly to the columnstore without passing through the deltastore. Некоторых строк в конце массовой загрузки может оказаться слишком мало для соответствия минимальному размеру rowgroup, составляющему 102 400 строк.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. В результате этого последние строки переходят в deltastore вместо columnstore.As a result, the final rows go to the deltastore instead of the columnstore. Для небольших массовых загрузок с менее 102 400 строк, все строки перемещаются напрямую в deltastore.For small bulk loads with less than 102,400 rows, all of the rows go directly to the deltastore.

некластеризованный индекс columnstoreNonclustered columnstore index

Некластеризованный индекс columnstore и кластеризованный индекс columnstore функционируют по одному принципу.A nonclustered columnstore index and a clustered columnstore index function the same. Разница в том, что некластеризованный индекс вторичен и создается на основе таблицы индексов rowstore, а кластеризованный индекс columnstore является первичным хранилищем для всей таблицы.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.

Некластеризованный индекс содержит копию всех или части строк и столбцов в базовой таблице.The nonclustered index contains a copy of part or all of the rows and columns in the underlying table. Индекс определяется как один или несколько столбцов таблицы и включает дополнительное условие для фильтрации строк.The index is defined as one or more columns of the table and has an optional condition that filters the rows.

Некластеризованный индекс columnstore позволяет осуществлять операционную аналитику в реальном времени, когда рабочая нагрузка OLTP выполняется с использованием базового кластеризованного индекса, а аналитика при этом проводится параллельно на основе индекса columnstore.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. Дополнительные сведения см. в статье Начало работы с Columnstore для получения операционной аналитики в реальном времени.For more information, see Get started with columnstore for real-time operational analytics.

Выполнение в пакетном режимеBatch mode execution

Пакетный режим выполнения — это метод обработки запросов, при котором обрабатываются сразу несколько строк.Batch mode execution is a query processing method that's used to process multiple rows together. Выполнение в пакетном режиме тесно интегрировано и оптимизировано для взаимодействия с форматом хранения columnstore.Batch mode execution is closely integrated with, and optimized around, the columnstore storage format. Пакетный режим выполнения иногда называется выполнением на основе векторов или векторизированным выполнением.Batch mode execution is sometimes known as vector-based or vectorized execution. В запросах к индексам columnstore используется режим пакетного выполнения, что обычно повышает производительность запросов в 2–4 раза.Queries on columnstore indexes use batch mode execution, which improves query performance typically by two to four times. Дополнительные сведения см. в статье Руководство по архитектуре обработки запросов.For more information, see the Query processing architecture guide.

Для чего нужен индекс columnstore?Why should I use a columnstore index?

Индекс columnstore обеспечивает высокую (обычно десятикратную) степень сжатия данных, что позволяет существенно снизить затраты на хранение данных.A columnstore index can provide a very high level of data compression, typically by 10 times, to significantly reduce your data warehouse storage cost. Кроме того, он на порядок повышает эффективность аналитики по сравнению с индексом сбалансированного дерева.For analytics, a columnstore index offers an order of magnitude better performance than a btree index. Индексы columnstore — это предпочтительный формат для хранения данных и выполнения аналитики.Columnstore indexes are the preferred data storage format for data warehousing and analytics workloads. Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x), индексы columnstore можно использовать для аналитики рабочей нагрузки по операциям в режиме реального времени.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.

Почему индексы columnstore такие быстрые.Reasons why columnstore indexes are so fast:

  • В столбцах хранятся значения из одного и того же домена, которые часто похожи, что позволяет добиться высокой степени сжатия данных.Columns store values from the same domain and commonly have similar values, which result in high compression rates. Узкие места в системе, связанные с операциями ввода-вывода, сведены к минимуму или отсутствуют, а объем используемой памяти существенно сокращается.I/O bottlenecks in your system are minimized or eliminated, and memory footprint is reduced significantly.

  • Высокие степени сжатия повышают производительность запросов с помощью малого отпечатка в памяти.High compression rates improve query performance by using a smaller in-memory footprint. В свою очередь, может повышаться производительность запросов, так как SQL ServerSQL Server может выполнять больше операций с запросами и данными в памяти.In turn, query performance can improve because SQL ServerSQL Server can perform more query and data operations in memory.

  • Пакетное выполнение повышает эффективность запросов (обычно в 2–4 раза) благодаря обработке сразу нескольких строк.Batch execution improves query performance, typically by two to four times, by processing multiple rows together.

  • Часто запросы выбирают только несколько столбцов из таблицы, что сокращает общее число операций ввода-вывода для физического носителя.Queries often select only a few columns from a table, which reduces total I/O from the physical media.

Когда следует использовать индекс columnstore?When should I use a columnstore index?

Рекомендации по использованиюRecommended use cases:

Как сделать выбор между индексами rowstore и columnstore?How do I choose between a rowstore index and a columnstore index?

Индексы rowstore лучше всего работают с запросами, направленными на поиск данных или определенного значения, а также с запросами в небольших диапазонах данных.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. Используйте индексы rowstore с транзакционными рабочими нагрузками, так как для них чаще требуется поиск по таблицам, а не сканирование таблиц.Use rowstore indexes with transactional workloads because they tend to require mostly table seeks instead of table scans.

Индексы columnstore обеспечивают значительное повышение производительности при выполнении аналитических запросов, которые сканируют большие объемы данных (в частности, большие таблицы).Columnstore indexes give high performance gains for analytic queries that scan large amounts of data, especially on large tables. Используйте индексы columnstore с рабочими нагрузками по хранению и аналитике данных (в частности, с таблицами фактов), так как для них чаще требуется полное сканирование таблиц, а не поиск по таблицам.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.

Можно ли использовать индексы rowstore и columnstore в одной и той же таблице?Can I combine rowstore and columnstore on the same table?

Да.Yes. Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x) можно создавать обновляемый некластеризованный индекс columnstore в таблице rowstore.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create an updatable nonclustered columnstore index on a rowstore table. В индексе columnstore хранится копия выбранных столбцов, которые сжимаются в среднем в 10 раз и не требуют много дополнительного пространства.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. Вы сможете выполнять аналитику на основе индекса columnstore и транзакции на основе индекса rowstore одновременно.You can run analytics on the columnstore index and transactions on the rowstore index at the same time. Columnstore обновляется при каждом изменении данных в таблице rowstore, поэтому оба индекса работают с одними и теми же данными.The columnstore is updated when data changes in the rowstore table, so both indexes work against the same data.

Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x) можно помещать в индекс columnstore один или несколько некластеризованных индексов rowstore и выполнять эффективный поиск в таблицах на основе базового индекса columnstore.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. Кроме того, появляется доступ к другим возможностям.Other options become available too. Например, можно принудительно задать ограничение PRIMARY KEY, применив к таблице rowstore ограничение UNIQUE.For example, you can enforce a primary key constraint by using a UNIQUE constraint on the rowstore table. Так как неуникальное значение в таблицу rowstore не вставляется, SQL ServerSQL Server не может вставить значение в columnstore.Because a non-unique value fails to insert into the rowstore table, SQL ServerSQL Server can't insert the value into the columnstore.

МетаданныеMetadata

Все столбцы в индексе columnstore хранятся в метаданных как включенные столбцы.All of the columns in a columnstore index are stored in the metadata as included columns. Индекс columnstore не имеет ключевых столбцов.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)

Для всех реляционных таблиц, не заданных как кластеризованный индекс columnstore, в качестве базового формата данных используется индекс rowstore.All relational tables, unless you specify them as a clustered columnstore index, use rowstore as the underlying data format. CREATE TABLE создает таблицу rowstore, если не указан параметр WITH CLUSTERED COLUMNSTORE INDEX.CREATE TABLE creates a rowstore table unless you specify the WITH CLUSTERED COLUMNSTORE INDEX option.

С помощью инструкции CREATE TABLE можно создать таблицу с индексом columnstore, указав параметр WITH CLUSTERED COLUMNSTORE INDEX.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. Чтобы конвертировать таблицу rowstore в columnstore, используйте инструкцию CREATE COLUMNSTORE INDEX.If you already have a rowstore table and want to convert it to a columnstore, you can use the CREATE COLUMNSTORE INDEX statement.

ЗадачаTask Справочные разделыReference topics ПримечанияNotes
Создание таблицы как кластеризованного индекса columnstoreCreate a table as a columnstore. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x), таблицы можно создавать как кластеризованный индекс columnstore.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create the table as a clustered columnstore index. Для этого не нужно сначала создавать таблицу rowstore, а затем конвертировать ее в columnstore.You don't have to first create a rowstore table and then convert it to columnstore.
Создание таблицы в памяти с индексом columnstore.Create a memory table with a columnstore index. CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL) Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x), таблицы, оптимизированные для памяти, можно создавать с индексом columnstore.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), you can create a memory-optimized table with a columnstore index. Индекс columnstore можно добавить и после создания таблицы, используя синтаксис ALTER TABLE ADD INDEX.The columnstore index can also be added after the table is created by using the ALTER TABLE ADD INDEX syntax.
Преобразование таблицы rowstore в таблицу columnstoreConvert a rowstore table to a columnstore. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) Преобразуйте существующую кучу или сбалансированное дерево в columnstore.Convert an existing heap or binary tree to a columnstore. В примерах показано, как обрабатывать существующие индексы, а также имя индекса, которое нужно использовать в процессе преобразования.Examples show how to handle existing indexes and also the name of the index when performing this conversion.
Преобразование таблицы columnstore в rowstoreConvert a columnstore table to a rowstore. CREATE CLUSTERED INDEX (Transact-SQL) или Преобразование таблицы columnstore обратно в кучу rowstoreCREATE CLUSTERED INDEX (Transact-SQL) or Convert a columnstore table back to a rowstore heap Обычно это преобразование не требуется, но бывают ситуации, когда оно необходимо.Usually this conversion isn't necessary, but there can be times when you need to convert. В примерах показано, как преобразовать columnstore в кучу или кластеризованный индекс.Examples show how to convert a columnstore to a heap or clustered index.
Создание индекса columnstore в таблице rowstoreCreate a columnstore index on a rowstore table. CREATE COLUMNSTORE INDEX (Transact-SQL)CREATE COLUMNSTORE INDEX (Transact-SQL) Таблица rowstore может включать один индекс columnstore.A rowstore table can have one columnstore index. Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x), индекс columnstore может иметь отфильтрованное условие.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), the columnstore index can have a filtered condition. В примерах показан основной синтаксис.Examples show the basic syntax.
Создание высокопроизводительных индексов для оперативной аналитикиCreate performant indexes for operational analytics. Начало работы с Columnstore для получения операционной аналитики в реальном времениGet started with columnstore for real-time operational analytics Здесь объясняется, как создать дополнительные индексы columnstore и индексы сбалансированного дерева, чтобы использовать индексы сбалансированного дерева в запросах OLTP, а индексы columnstore — в запросах аналитики.Describes how to create complementary columnstore and btree indexes, so that OLTP queries use btree indexes and analytics queries use columnstore indexes.
Создание высокопроизводительных индексов сolumnstore для хранилищ данныхCreate performant columnstore indexes for data warehousing. Индексы сolumnstore для хранилищ данныхColumnstore indexes for data warehousing Описывает использование индексов сбалансированного дерева в таблицах columnstore для создания высокопроизводительных запросов к хранилищу данных.Describes how to use btree indexes on columnstore tables to create performant data warehousing queries.
Использование индекса сбалансированного дерева для принудительного применения ограничения PRIMARY KEY в таблице columnstoreUse a btree index to enforce a primary key constraint on a columnstore index. Индексы сolumnstore для хранилищ данныхColumnstore indexes for data warehousing Показывает, как объединить индексы сбалансированного дерева и columnstore для принудительного применения ограничений PRIMARY KEY для индекса columnstore.Shows how to combine btree and columnstore indexes to enforce primary key constraints on the columnstore index.
Удаление индекса columnstore.Drop a columnstore index. DROP INDEX (Transact-SQL)DROP INDEX (Transact-SQL) Для удаления индекса columnstore используется стандартный синтаксис DROP INDEX, который используется в индексах сбалансированного дерева.Dropping a columnstore index uses the standard DROP INDEX syntax that btree indexes use. При удалении кластеризованного индекса columnstore таблица columnstore преобразуется в кучу.Dropping a clustered columnstore index converts the columnstore table to a heap.
Удаление строки из индекса columnstore.Delete a row from a columnstore index. DELETE (Transact-SQL)DELETE (Transact-SQL) Используйте синтаксис DELETE (Transact-SQL) для удаления строки.Use DELETE (Transact-SQL) to delete a row.

Строка columnstore: SQL ServerSQL Server отмечает строку как логически удаленную, но не освобождает физическое хранилище для строки до тех пор, пока индекс не будет перестроен.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: SQL ServerSQL Server логически и физически удаляет строку.deltastore row: SQL ServerSQL Server logically and physically deletes the row.
Обновление строки в индексе columnstore.Update a row in the columnstore index. UPDATE (Transact-SQL)UPDATE (Transact-SQL) Используйте синтаксис UPDATE (Transact-SQL) для обновления строки.Use UPDATE (Transact-SQL) to update a row.

Строка columnstore: SQL ServerSQL Server отмечает строку как логически удаленную, а затем вставляет обновленную строку в deltastore.columnstore row: SQL ServerSQL Server marks the row as logically deleted and then inserts the updated row into the deltastore.

Строка deltastore: SQL ServerSQL Server обновляет строку в deltastore.deltastore row: SQL ServerSQL Server updates the row in the deltastore.
Загрузка данных в индекс columnstore.Load data into a columnstore index. Индексы columnstore. Руководство по загрузке данныхColumnstore indexes data loading
Принудительное перемещение всех строк из deltastore в columnstoreForce all rows in the deltastore to go into the columnstore. ALTER INDEX (Transact-SQL)REBUILDALTER INDEX (Transact-SQL) ... REBUILD

Дефрагментация индексов columnstoreColumnstore indexes defragmentation
Инструкция ALTER INDEX с параметром REBUILD принудительно перемещает все строки в columnstore.ALTER INDEX with the REBUILD option forces all rows to go into the columnstore.
Дефрагментация индекса columnstore.Defragment a columnstore index. ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL) Инструкция ALTER INDEX ... REORGANIZE дефрагментирует индексы columnstore в оперативном режиме.ALTER INDEX ... REORGANIZE defragments columnstore indexes online.
Слияние таблиц с индексами columnstore.Merge tables with columnstore indexes. MERGE (Transact-SQL)MERGE (Transact-SQL)

См. также разделSee also

Индексы columnstore. Руководство по загрузке данных Columnstore indexes data loading
Новые возможности индексов columnstore Columnstore indexes versioned feature summary
Производительность запросов по индексам columnstore Columnstore indexes query performance
Начало работы с Columnstore для получения операционной аналитики в реальном времени Get started with columnstore for real-time operational analytics
Индексы columnstore для хранения данных Columnstore indexes for data warehousing
Дефрагментация индексов columnstore Columnstore indexes defragmentation
Руководство по архитектуре и разработке индексов SQL Server SQL Server index design guide
Рекомендации по проектированию индексов columnstoreColumnstore index architecture