Структура Columnstore
Данные хранилища столбцов физически хранятся в одном или нескольких сегментах (обычные единицы выделения больших объектов) на столбец, а также могут быть разделены обычным способом. Каждый сегмент содержит примерно миллион строк сильно сжатых значений или ссылок на значения (доступно несколько методов сжатия). Ссылка на значение ссылается на запись в одном из двух хеш-словарей .
Словари закрепляются в памяти во время выполнения запроса, при этом идентификаторы значений данных из сегмента просматриваются в словаре всякий раз, когда для выполнения требуется фактическое значение данных (этот поиск откладывается на максимально возможное время из соображений производительности).
Сегменты также имеют запись заголовка, содержащую метаданные, такие как минимальное и максимальное значения, хранящиеся в сегменте. Информация из заголовка часто может использоваться для исключения полных разделов из обработки во время выполнения. Информация записи заголовка хранится в обычной корневой структуре данных больших объектов, поэтому удаление сегмента означает, что механизм хранения может полностью пропустить чтение страниц данных больших объектов из физического хранилища. Максимизация потенциала исключения может потребовать тщательного проектирования , в том числе зависимости от порядка кластеризованного индекса во время создания индекса Columnstore.
Конкретные операторы плана
SQL Server 2012 представляет новый режим выполнения, называемый пакетным режимом. В этом режиме пакеты из примерно 1000 строк передаются между операторами, что значительно повышает эффективность использования процессора. Внутри каждого пакета столбчатые данные представлены в виде вектора. Не все операторы плана поддерживают работу в пакетном режиме, но примеры таких, которые включают сканирование индекса Columnstore, внутреннее объединение хэша, построение таблицы хеша, растровый фильтр, агрегирование хэша (не скалярные агрегаты), фильтр и вычисление скаляров (для проекции и выражения) оценка). Планы выполнения запросов были улучшены, чтобы показать приблизительный и фактический режим выполнения.
Антишаблоны
В первом выпуске существует большое количество ограничений, включая ограничения на допустимые типы данных . Поддерживаются наиболее распространенные типы; неподдерживаемые типы данных включают в себя DECIMAL
с точностью выше , чем 18 цифр, (N)VARCHAR(MAX)
, UNIQUEIDENTIFIER
, типы CLR, и (VAR)BINARY
.
Использование строковых типов , OUTER JOIN
, IN
,EXISTS
, NOT IN
, OR
, UNION ALL
может привести к значительному снижению производительности (Ряд выполнения режима), если обходные не используется , что , как правило , включают необычные синтаксические перезаписи , как показано в связанных статьях в данном разделе.
Дополнительная информация
Ремус Ruşanu имеет в блоге отличный обзор здесь .