Структура стовпців
Дані стовпчиків фізично зберігаються в одному або декількох сегментах (звичайні одиниці розподілу LOB) на стовпчик, а також можуть бути розділені звичайним чином. Кожен сегмент містить приблизно один мільйон рядків сильно стислих значень або значень значень (доступно декілька методів стиснення). Посилання на значення посилається на запис в одному з до двох хеш-словників .
Словники закріплюються в пам'яті під час виконання запиту, ідентифікатори значень даних із сегмента шукаються у словнику щоразу, коли для виконання потрібне фактичне значення даних (цей пошук відкладається на якомога довше з міркувань продуктивності).
Сегменти також мають запис заголовка, що містить метадані, такі як мінімальні та максимальні значення, що зберігаються в сегменті. Інформація із заголовка часто може використовуватися для усунення повних розділів від обробки під час виконання. Інформація запису заголовка зберігається у звичайній кореневій структурі даних LOB, тому усунення сегменту означає, що механізм зберігання даних може повністю пропустити читання сторінок даних LOB з фізичного зберігання. Максимізація потенціалу для усунення може вимагати ретельної розробки , включаючи залежність від кластерного порядку індексу під час побудови індексу Columnstore.
Конкретні оператори плану
SQL Server 2012 вводить новий режим виконання, який називається Пакетний режим. У цьому режимі пакети розміром приблизно 1000 рядків передаються між операторами, що значно покращує ефективність використання процесора. У кожному пакеті стовпчикові дані представлені у вигляді вектора. Не всі оператори плану підтримують операцію пакетного режиму, але приклади тих, що включають: Сканування індексів стовпців, Hash Inner Join, Створення збірки таблиць хеш-файлів, Фільтр бітових карт, Hash Aggregate (не скалярних агрегатів), Фільтр та Обчислення скаляр (для прогнозування та вираження оцінка). Плани виконання запитів були покращені для відображення прогнозованого та фактичного режиму виконання.
Анти-візерунки
У першому випуску існує велика кількість обмежень, включаючи обмеження щодо допустимих типів даних . Підтримуються найбільш поширені типи; підтримуються типи даних включають в себе DECIMAL
з точністю вище , ніж 18 цифр, (N)VARCHAR(MAX)
, UNIQUEIDENTIFIER
, типи CLR, і (VAR)BINARY
.
Використання строкових типів , OUTER JOIN
, IN
,EXISTS
, NOT IN
, OR
, UNION ALL
може привести до значного зниження продуктивності (Ряд виконання режиму), якщо обхідні не використовується , що , як правило , включають незвичайні синтаксичні перезапису , як показано в пов'язаних статтях в даному розділі.
Більше інформації
Ремус Ruşanu має в блозі відмінний огляд тут .