Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Warehouse в Microsoft Fabric
SQL база данных в Microsoft Fabric
Узнайте, какие функции columnstore доступны на платформах SQL и версиях SQL Server.
Сводка функций для релизов продукта
В следующей таблице перечислены основные функции для индексов columnstore и продукты, в которых они доступны.
Сведения о доступности компонентов в Управляемом экземпляре SQL Azure с политикой обновления SQL Server см. в столбце соответствующей версии SQL Server.
| Функция индекса Columnstore | SQL Server 2016 (13.x)1 | SQL Server 2017 (14.x) | SQL Server 2019 (15.x) | SQL Server 2022 (16.x) | SQL Server 2025 (17.x) | База данных Azure SQL2 и Управляемый экземпляр Azure SQLAUTD | Azure Synapse Analytics и Хранилище данных в Microsoft Fabric |
|---|---|---|---|---|---|---|---|
| Выполнение пакетного режима для многопоточных запросов3 | Да | Да | Да | Да | Да | Да | Да |
| Пакетный режим выполнения для однопоточных запросов | Да | Да | Да | Да | Да | Да | Да |
| Опция сжатия архивации | Да | Да | Да | Да | Да | Да | Да |
| Изоляция моментальных снимков и изоляция с фиксированным чтением моментальных снимков. | Да | Да | Да | Да | Да | Да | Да |
| Указать индекс columnstore при создании таблицы | Да | Да | Да | Да | Да | Да | Да |
| Always On поддерживает колонночные индексы | Да | Да | Да | Да | Да | Да | Да |
| Читаемая вторичная реплика Always On поддерживает некластеризованные столбчатые индексы только для чтения. | Да | Да | Да | Да | Да | Да | Да |
| Вторичная читаемая реплика Always On поддерживает обновляемые индексы columnstore | Да | Да | Да | Да | Да | нет | нет |
| Некластеризованный индекс columnstore только для чтения в heap или B-дереве | Да4 | Да4 | Да4 | Да4 | Да4 | Да4 | Да4 |
| Обновляемый некластеризованный столбчатый индекс в куче или в B-дереве | Да | Да | Да | Да | Да | Да | Да |
| Дополнительные индексы B-дерева разрешены в куче или B-дереве, которое имеет некластеризованный индекс столбцового хранилища. | Да | Да | Да | Да | Да | Да | Да |
| Обновляемый кластеризованный колонночный индекс | Да | Да | Да | Да | Да | Да | Да |
| Индекс B-дерева в кластеризованном хранилище столбцов | Да | Да | Да | Да | Да | Да | Да |
| Индекс columnstore в таблице, оптимизированной для памяти | Да | Да | Да | Да | Да | Да | Да |
| Определение некластеризованного индекса columnstore поддерживает использование отфильтрованных условий | Да | Да | Да | Да | Да | Да | Да |
Опция задержки сжатия для колоночных индексов в CREATE TABLE и ALTER TABLE |
Да | Да | Да | Да | Да | Да | Да |
| Поддержка типа nvarchar(max) | нет | Да | Да | Да | Да | Да | Нет5 |
| Индекс columnstore может содержать нематериализованный вычисляемый столбец | нет | Да | Да | Да | Да | нет | нет |
| Поддержка перемещения кортежей с слиянием в фоновом режиме | нет | нет | Да | Да | Да | Да | Да |
| Упорядоченные кластерные columnstore-индексы | нет | нет | нет | Да | Да | Да | Да |
| Упорядоченные индексы колонночного хранилища данных без кластеров | нет | нет | нет | нет | Да | Да | нет |
| Создание и перестроение индекса columnstore в Интернете | нет | нет | нет | Да | Да | Да | нет |
| Создание и перестроение индексированного columnstore в режиме онлайн | нет | нет | нет | нет | Да | Да | нет |
1 Для SQL Server 2016 (13.x) с пакетом обновления 1 (SP1) и более поздних версий индексы columnstore доступны во всех выпусках. Для SQL Server 2016 (13.x) (до sp1) и более ранних версий индексы columnstore доступны только в Выпуске Enterprise. 2 В SQL Azure индексы columnstore доступны на уровнях DTU Premium, DTU Standard — S3 и выше, а также на всех уровнях виртуальных ядер. 3 Степень параллелизма (DOP) для пакетного режима операций ограничена 2 для SQL Server Standard Edition и 1 для SQL Server Web и Express Editions. Это ограничение относится к индексам columnstore, созданным на основе дисковых таблиц и оптимизированных для памяти таблиц. 4 Чтобы создать некластеризованный columnstore индекс только для чтения, разместите индекс в файловой группе, доступной только для чтения. 5 не поддерживается в выделенных пулах SQL, но поддерживается в бессерверном пуле SQL.
SQL Server 2025 (17.x)
В SQL Server 2025 (17.x) добавлены следующие функции:
Упорядоченные некластеризованные columnstore повышают производительность запросов в оперативной аналитике в режиме реального времени.
Дополнительные сведения см. в разделе Настройка производительности с упорядоченными индексами columnstore.
Теперь можно в режиме онлайн создать или перестроить упорядоченный индекс columnstore (кластеризованный или некластеризованный).
Можно указать
ONLINE = ONв инструкции CREATE INDEX, когда присутствуетORDER. Дополнительные сведения об операциях с индексами в сети см. в разделе "Выполнение операций индекса в сети".Улучшено качество сортировки для упорядоченных кластеризованных колонковых индексов.
В SQL Server 2025 (17.x) при создании упорядоченного кластеризованного columnstore индекса в режиме онлайн, алгоритм сортировки данных использует
tempdbвместо сортировки данных в памяти. ЕслиMAXDOPдля сборки индекса задано значение 1, сборка создает полностью упорядоченный кластеризованный индекс columnstore, который не имеет перекрывающихся сегментов. Это может повысить производительность запросов с помощью индекса. Однако сборка индекса может занять больше времени из-за дополнительных операций ввода-вывода, необходимых для переполненияtempdb. Если кластеризованный индекс columnstore уже существует, запросы могут продолжать использовать его, пока выполняется полностью упорядоченное перестроение индекса в сети.Дополнительные сведения см. в разделе "Сокращение перекрывающихся сегментов" и повышение производительности запросов.
Улучшены операции сжатия базы данных и файлов.
В предыдущих версиях SQL Server, когда кластеризованный индекс columnstore содержит любые столбцы с типами данных LOB, такими как varchar(max),nvarchar(max), varbinary(max), страницы данных, используемые этими столбцами, не могут быть перемещены операциями сжатия. В результате сжатие может оказаться менее эффективным при освобождении пространства в файлах данных.
В SQL Server 2025 (17.x) команды
DBCC SHRINKDATABASEиDBCC SHRINKFILEмогут перемещать страницы данных, используемые LOB-столбцами в индексах columnstore.
SQL Server 2022 (16.x)
В SQL Server 2022 (16.x) добавлены следующие функции:
- Упорядоченные кластеризованные индексы columnstore повышают производительность запросов на основе упорядоченных предикатов столбцов. Упорядоченные индексы columnstore могут повысить производительность, пропуская сегменты данных в целом. Это может значительно сократить объем операций ввода-вывода, необходимых для выполнения запросов к данным columnstore. Дополнительные сведения см. в разделе удаление сегмента. Дополнительные сведения см. в разделах CREATE COLUMNSTORE INDEX и Настройка производительности с упорядоченными columnstore индексами.
- Предикат pushdown с кластеризованной группой строк columnstore для устранения строк использует значения границ для оптимизации поиска строк. Все индексы columnstore получают преимущество от расширенного исключения сегментов по типу данных. Начиная с SQL Server 2022 (16.x), эти возможности устранения сегментов расширяются до типов данных string, binary и GUID, а datetimeoffset для масштабирования больше двух. Ранее исключение сегмента columnstore применялось только к числовым, датовым и временным типам данных, а также к типу данных datetimeoffset с масштабом меньше или равно двум. После обновления до версии SQL Server, поддерживающей устранение сегмента строки min/max (SQL Server 2022 (16.x) и более поздних версий, индекс columnstore не использует эту функцию, пока она не будет восстановлена с помощью
ALTER INDEX REBUILDилиCREATE INDEX WITH (DROP_EXISTING = ON). - Исключение групп строк в columnstore для префикса предикатов
LIKE(например,column LIKE 'string%'). Исключение сегментов не поддерживается для использования, не являющегося префиксом,LIKE, например,column LIKE '%string'. - Дополнительные сведения о добавленных функциях см. в статье "Новые возможности SQL Server 2022".
SQL Server 2019 (15.x)
SQL Server 2019 (15.x) добавляет следующие новые возможности:
Functional
Начиная с SQL Server 2019 (15.x), перемещение кортежей поддерживается фоновым заданием слияния, которое автоматически сжимает более мелкие дельта-группы строк, существующие в течение некоторого времени в зависимости от внутреннего порогового значения, или объединяет сжатые группы строк, из которых удалено множество строк. Ранее операция реорганизации индекса требовалась для объединения групп строк с частично удаленными данными. Это со временем повышает качество индекса columnstore.
SQL Server 2017 (14.x)
SQL Server 2017 (14.x) добавляет эти новые функции.
Functional
- SQL Server 2017 (14.x) поддерживает неперсистированные вычисляемые столбцы в кластеризованных индексах columnstore. Сохраненные вычисляемые столбцы не поддерживаются в кластеризованных индексах columnstore. Невозможно создать некластеризованный индекс columnstore в вычисляемом столбце.
SQL Server 2016 (13.x)
SQL Server 2016 (13.x) добавляет ключевые улучшения для повышения производительности и гибкости индексов columnstore. Эти улучшения расширяют возможности хранения данных и обеспечивают поддержку операционной аналитики в реальном времени.
Functional
В таблице типа rowstore может быть один обновляемый некластеризованный индекс типа columnstore. Ранее некластеризованный индекс columnstore был доступен только для чтения.
Определение некластеризованного индекса columnstore поддерживает использование отфильтрованных условий. Чтобы свести к минимуму негативное влияние на производительность, вызванное добавлением некластеризованного индекса columnstore для таблицы OLTP, можно использовать отфильтрованное условие для создания некластеризованного индекса columnstore только для холодных данных операционной рабочей нагрузки.
Таблица, хранящаяся в оперативной памяти, может иметь один колоночный индекс. Вы можете создать столбец при создании таблицы или добавить его позже с помощью команды ALTER TABLE. Ранее создание индекса columnstore допускалось только в таблицах на дисках.
Кластеризованный индекс columnstore может включать один или несколько некластеризованных индексов rowstore. Ранее индекс columnstore не поддерживал некластеризованные индексы. SQL Server автоматически обслуживает некластеризованные индексы для операций DML.
Поддержка первичных и внешних ключей с использованием индекса B-tree для соблюдения этих ограничений на кластеризованный columnstore index.
Индексы columnstore включают параметр задержки сжатия, который сводит к минимуму влияние транзакционной рабочей нагрузки на операционную аналитику в реальном времени. Этот параметр позволяет стабилизировать часто изменяющиеся строки, прежде чем сжать их в колонночное хранилище. Дополнительные сведения см. в статье CREATE COLUMNSTORE INDEX и Начало работы с индексами columnstore для оперативной аналитики в реальном времени.
Производительность для уровня совместимости базы данных 120 или 130
Индексы columnstore поддерживают уровень изоляции моментальных снимков read committed (RCSI) и изоляцию моментальных снимков (SI). Это позволяет выполнять транзакционно согласованные аналитические запросы без блокировок.
Columnstore поддерживает дефрагментацию индексов с помощью удаления строк без необходимости явного перестроения индекса. Инструкция
ALTER INDEX ... REORGANIZEудаляет удаленные строки (на основе внутренней политики) из индекса columnstore в оперативном режиме.К индексам columnstore можно получить доступ на читаемой вторичной реплике Always On. За счет переноса запросов аналитики во вторичную реплику AlwaysOn можно повысить производительность оперативной аналитики.
Агрегатная отправка вычисляет агрегатные функции
MIN,MAX,SUMCOUNTиAVGво время сканирования таблиц, когда тип данных использует не более 8 байт, и не является строковым типом данных. Понижение агрегатов поддерживается с включением или без включения предложенияGROUP BYкак для кластеризованных столбцовых индексов, так и для некластеризованных столбцовых индексов. В SQL Server это улучшение зарезервировано для выпуска Enterprise.Предикат строки ускоряет запросы, которые сравнивают строки типа varchar/char или nvarchar/nchar. Это относится к общим операторам сравнения, включая такие операторы, как
LIKE, которые используют фильтры битовой карты. Это работает со всеми поддерживаемыми параметрами сортировки. В SQL Server это улучшение зарезервировано для выпуска Enterprise.Улучшения для операций в пакетном режиме за счет использования векторных аппаратных возможностей. Ядро СУБД обнаруживает уровень поддержки процессора для расширений AVX 2 (расширенные векторные расширения) и SSE 4 (потоковые расширения SIMD) и использует их, если они поддерживаются. В SQL Server это улучшение зарезервировано для выпуска Enterprise.
Производительность для уровня совместимости базы данных 130
Поддержка нового пакетного режима для запросов с помощью любой из следующих операций:
SORT- агрегаты с несколькими четко различимыми функциями некоторые примеры:
COUNT/COUNT,AVG/SUM,CHECKSUM_AGG,STDEV/STDEVP; - агрегатные оконные функции:
COUNT,COUNT_BIG,SUM,AVG,MIN,MAXиCLR; - определяемые пользователем оконные агрегаты:
CHECKSUM_AGG,STDEV,STDEVP,VAR,VARPиGROUPING; - аналитические агрегатные оконные функции:
LAG,LEAD,FIRST_VALUE,LAST_VALUE,PERCENTILE_CONT,PERCENTILE_DISC,CUME_DISTиPERCENT_RANK.
Однопоточные запросы, выполняемые под
MAXDOP 1или с последовательным планом запроса, выполняются в пакетном режиме. Ранее только многопоточные запросы выполнялись в пакетном режиме.Запросы к таблицам, оптимизированным для памяти, могут иметь параллельные планы в режиме SQL InterOp как при доступе к данным в строчном хранилище, так и в колоночном индексе.
Supportability
Следующие системные представления являются новыми для columnstore:
- sys.column_store_row_groups
- sys.dm_column_store_object_pool
- sys.dm_db_column_store_row_group_operational_stats
- sys.dm_db_column_store_row_group_physical_stats
- sys.dm_db_index_operational_stats
- sys.dm_db_index_physical_stats
- sys.internal_partitions
Следующие представления динамического управления (DMV), основанные на технологии OLTP в памяти, содержат обновления для колоночного хранилища:
- sys.dm_db_xtp_hash_index_stats
- sys.dm_db_xtp_index_stats
- sys.dm_db_xtp_memory_consumers
- sys.dm_db_xtp_nonclustered_index_stats
- sys.dm_db_xtp_object_stats
- sys.dm_db_xtp_table_memory_stats
Limitations
- Для таблиц в памяти индекс columnstore должен содержать все столбцы; Индекс columnstore не может иметь отфильтрованное условие.
- Для таблиц в памяти запросы к индексам columnstore выполняются только в режиме взаимодействия, а не в собственном режиме компиляции. Поддерживается параллельное выполнение.
Известные проблемы
Область применения: SQL Server 2022 (16.x) и более ранних версий, Управляемый экземпляр SQL Azure2022
- Страницы данных, используемые столбцами LOB (varbinary(max), varchar(max), и nvarchar(max)) в сегментах columnstore сжатого типа, не могут быть перемещены с помощью
DBCC SHRINKDATABASEиDBCC SHRINKFILE. Эта проблема устранена в SQL Server 2025 (17.x).
SQL Server 2014 (12.x)
SQL Server 2014 (12.x) представил кластеризованный индекс columnstore в качестве основного формата хранилища. Это позволило выполнять регулярные операции загрузки, а также операции обновления, удаления и вставки.
- Таблица может использовать кластеризованный индекс columnstore в качестве основного хранилища таблиц. В таблице не разрешены другие индексы, но кластеризованный индекс columnstore можно обновить, чтобы вы могли выполнять регулярные нагрузки и вносить изменения в отдельные строки.
- Некластеризованный индекс columnstore продолжает иметь те же функции, что и в SQL Server 2012 (11.x), за исключением дополнительных операторов, которые теперь могут выполняться в пакетном режиме. Обновление по-прежнему недоступно, за исключением перестроения и переключения разделов. Некластеризованный индекс columnstore поддерживается только в таблицах на диске, но не в таблицах в памяти.
- Кластеризованный и некластеризованный индексы колоночного хранилища данных имеют опцию архивного сжатия, которое дополнительно сжимает данные. Параметр архивации удобен для сокращения объема данных в памяти и на диске, однако он снижает производительность запросов. Его можно рекомендовать для редко используемых данных.
- Кластеризованный и некластеризованный индексы columnstore функционируют весьма сходным образом; они используют одинаковый формат хранения по столбцам, подсистему обработки запросов и набор динамических административных представлений. Различие заключается в типе индекса (основной и дополнительный), кроме того, некластеризованный индекс columnstore доступен только для чтения.
- Следующие операторы выполняются в пакетном режиме для многопоточных запросов: SCAN, FILTER, PROJECT, JOIN, GROUP BY и UNION ALL.
SQL Server 2012 (11.x)
SQL Server 2012 (11.x) представил некластеризованный индекс columnstore в качестве другого типа индекса для таблиц rowstore и пакетной обработки запросов к данным columnstore.
- Таблица типа rowstore может иметь один некластеризованный индекс columnstore.
- Индекс columnstore доступен только для чтения. После создания columnstore индекса невозможно обновить таблицу с помощью операций
INSERT,DELETEиUPDATE. Чтобы выполнить эти операции, необходимо удалить индекс, обновить таблицу и заново создать columnstore индекс. Дополнительные данные в таблицу можно загрузить с помощью переключения секций. Преимущество переключения разделов заключается в том, что вы можете загружать данные без удаления и перестроения индекса columnstore. - Индекс columnstore всегда требует дополнительного места для хранения, как правило, на 10 % больше по сравнению со строковым хранилищем, поскольку он хранит копию данных.
- Пакетная обработка обеспечивает 2x или более высокую производительность запросов, но она доступна только для параллельного выполнения запросов.
Связанный контент
- Индексы Columnstore — руководство по проектированию
- Индексы Columnstore — руководство по загрузке данных
- Индексы Columnstore — производительность запросов
- Начните работу с индексами колоночного хранения для оперативной аналитики в режиме реального времени
- Индексы Columnstore для хранилищ данных
- Оптимизация обслуживания индексов позволяет повысить производительность запросов и снизить уровень потребления ресурсов