【问题标题】:Columnstore Indexes - Check Deleted Rows列存储索引 - 检查已删除的行
【发布时间】:2019-01-31 12:38:56
【问题描述】:

我有一个包含 7409825 行的表和一个非聚集列存储索引。我正在使用 dmv sys.dm_db_column_store_row_group_physical_stats 检查已删除的行。当我对表发出删除命令并从 dmv 检查列 deleted_rows 时,它始终为零。

它不应该在该列上显示一些值吗?我在读到列存储索引上的行没有被删除,而是被标记为删除,它们应该出现在 sys.dm_db_column_store_row_group_physical_stats 的列 deleted_rows 上。

我在增量存储中没有行组,所有行组都在列存储中压缩。

我正在使用此代码检查已删除的行

    SELECT  OBJECT_NAME(CSRowGroups.object_id)as tab,
            CSRowGroups.*
    FROM sys.indexes AS i 
    INNER JOIN sys.objects o
      ON (i.object_id = o.object_id) 
    INNER JOIN sys.dm_db_column_store_row_group_physical_stats AS  CSRowGroups  
      ON i.object_id = CSRowGroups.object_id AND i.index_id = CSRowGroups.index_id 
    WHERE o.name = 'TableName'

【问题讨论】:

    标签: sql-server sql-server-2016 columnstore


    【解决方案1】:

    刚刚在这个链接上找到了答案:

    https://www.mssqltips.com/sqlservertip/4280/sql-server-2016-columnstore-index-enhancements--system-views-for-diskbased-tables/

    使用非聚集列存储索引,删除的行首先进入 COLUMN_STORE_DELETE_BUFFER,可以在 sys.internal_partitions 上看到。

    仅当删除的行数超过 1048576 时,它们才会转到已删除的位图(因此可以在 sys.dm_db_column_store_row_group_physical_stats 上进行检查)。它们可以通过后台 Tuple Mover 线程或通过显式 Reorganize 命令移动到位图。

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多