The short answer
A Clustered Columnstore Index (CCI) is the default storage format for tables created in Azure Synapse Dedicated SQL Pool. Unlike traditional row-based relational databases that store entire rows together on eight-kilobyte pages, a columnstore index organizes and compresses data column by column.
Physical architecture: Rowgroups and Segments
When data is loaded into a CCI table, Synapse groups rows into large chunks called rowgroups, ideally holding roughly 1 million rows each (1,048,576 rows).
Within each rowgroup, every column is sliced into an independent physical column segment. Synapse applies high-ratio compression algorithms to each segment separately.
Rowgroup 1 (~1,000,000 rows) +-------------------------------------------------+ | Segment: customer_id (min=1, max=50000) | +-------------------------------------------------+ | Segment: order_date (min=2024-01-01, max=...) | +-------------------------------------------------+ | Segment: order_amount (min=5.00, max=9800.00) | +-------------------------------------------------+
Why CCI dominates analytical workloads
- Columnar I/O reduction: If an analytical query runs
SELECT SUM(order_amount) FROM dbo.fact_sales, Synapse reads only the disk segments containingorder_amount. The segments for the other 40 columns in the table are never touched by disk heads, cutting read I/O by 80% to 95%. - Segment elimination: For every column segment, Synapse stores min and max metadata in memory. If a query filters on
order_date >= '2024-06-01', the query engine skips all rowgroups whose maximum date is prior to June 2024 without decompressing them. - High compression ratios: Storing identical together allows compression algorithms to achieve 5x to 10x space savings compared to uncompressed row stores.