0

我有一个有 ~43M 行的表。出于内部目的,我们需要在此表上创建一个聚集列存储索引。为此,我们使用以下命令。

CREATE CLUSTERED COLUMNSTORE INDEX CCI_tblName ON dbo.tblName
WITH (MAXDOP = 1)

但是,由于某种原因,行组太小,如下图所示。

在此处输入图像描述

这可能是什么原因?据我所知,行组的最小大小是 102,400 行,因此我不明白这些行组为什么那么小。

总共775 row groups为该表创建了。


更新 #1 - 检查sys.dm_db_column_store_row_group_physical_stats统计数据,修剪原因主要是由DICTIONARY_SIZE. 如何处理这种情况?

4

1 回答 1

0

一个可能的问题是您的服务器内存不足。

他的博客文章专注于现实世界中最重要的问题之一——记忆压力。在您自己的计算机上或在受控环境中的某些开发服务器上进行测试时,大多数情况下(如果不是总是),您不会遇到任何限制。没有数百个同时连接用请求轰炸您的服务器,也没有查询会占用您所有可用的缓冲池内存。

我最近执行了几个测试,在尝试使用最大内存设置来显示溢出过程时,我完全忘记将其重置为原始值,因此在尝试重建聚集列存储索引时,我对非常不同的值感到惊讶作为我得到的行组的最大大小。这篇博文是关于深入探讨我从那以后发现的一些细节。

资料来源:http ://www.nikoport.com/2014/06/21/clustered-columnstore-indexes-part-31-memory-pressure-and-row-group-sizes/

此外,您可能在查询结果中看不到一些白色字符,从而在看似相似的值之间产生差异,从而导致不同的组。您还需要对此进行调查。

于 2017-12-21T13:46:40.337 回答