DWH-ETL-OLAP
August 23, 2019
DWH: Clustered Columnstore Index
- Масса статей здесь: Stairway to ColumnStore Indexes
- Вьюшка по статистике индекса:
SELECT OBJECT_NAME(rg.object_id) AS TableName, i.name AS IndexName, i.type_desc AS IndexType, rg.partition_number, rg.row_group_id, rg.total_rows, rg.size_in_bytes, rg.deleted_rows, rg.[state], rg.state_description FROM sys.column_store_row_groups AS rg INNER JOIN sys.indexes AS i ON i.object_id = rg.object_id AND i.index_id = rg.index_id WHERE i.name = N'IX_CL_CST_dboSales' ORDER BY TableName, IndexName, rg.partition_number, rg.row_group_id;
3. Статья по оптимизации загрузки напрямую в CCI, к примеру из SSIS. К примеру если стейджинг в CCI. К примеру если ХД по технологии DataVault или 6НФ, в этом случае удобно делать быстрые выборки по колонкам из стейджинга.
В целом, при традиционной схеме ЕТЛ, быстрее всего происходит вставка в heap-стайджинг. В случае CCI-стейджинга, при настройках из данного пункта, получаем 1,5 кратный прирост продолжительности вставки.
4. Ну и MSDN: Columnstore indexes - Data loading guidance
П.с. по пп. 3 и 4, при загрузке в CCI из SSIS в компоненте "OLE DB Destination" блокировка таблицы не нужна, достаточно установить "быструю загрузку в таблицу". В этом случае идет BULK INSERT, и группы строк блокируются на монопольный доступ автоматом.
При INSERT INTO ... SELECT FROM... наоборот нужен хинт WITH (TABLOCKX), который устанавливает массовую многопоточную вставку для инструкции INSERT с минимальным логированием и блокировками.
5.