Each partition can have multiple delta rowgroups
state. A background process named the tuple-mover
transitions from an
to
state. A background process named the tuple-mover
checks for closed row groups. If the process finds a closed rowgroup, it compresses the
rowgroup and stores it into the columnstore.
When a delta rowgroup has been compressed, the existing delta rowgroup transitions into
state to be removed later by the tuple-mover when there’s no reference to it, and
the new compressed rowgroup is marked as.
For more information about rowgroup statuses, see
sys.dm_db_column_store_row_group_physical_stats.
You can force delta rowgroups into the columnstore by using
ALTER INDEX
to rebuild or
reorganize the index. If there’s memory pressure during compression, the columnstore index
might reduce the number of rows in the compressed rowgroup.
The concept of partitioning is the same in a clustered index, a heap, and a columnstore index.
Partitioning a table divides the table into smaller groups of rows according to a range of
column values. It’s often used for managing the data. For example, you could create a partition
for each year of data, and then use partition switching to archive old data to less expensive
storage.
Rowgroups are always defined within a table partition. When a columnstore index is
partitioned, each partition has its own compressed rowgroups and delta rowgroups. A
nonpartitioned table contains one partition.
Each partition can have more than one delta rowgroups. When the columnstore index needs to
add data to a delta rowgroup and the delta rowgroup is locked by another transaction, the
columnstore index tries to obtain a lock on a different delta rowgroup. If there are no delta
rowgroups available, the columnstore index creates a new delta rowgroup. For example, a table
with 10 partitions could easily have 20 or more delta rowgroups.
Tip
Consider using table partitioning if there’s a need to remove data from the columnstore.
Switching out and truncating partitions that aren’t needed anymore is an efficient strategy
to delete data without introducing fragmentation in the columnstore.
OPEN
CLOSED
TOMBSTONE
COMPRESSED