小编Ove*_*ack的帖子

聚集列存储索引和外键

我正在使用索引对数据仓库进行性能调整。我对 SQL Server 2014 还是很陌生。Microsoft 描述了以下内容:

“我们将聚集列存储索引视为存储大型数据仓库事实表的标准,并预计它将用于大多数数据仓库场景。由于聚集列存储索引是可更新的,您的工作负载可以执行大量的插入、更新、和删除操作。” http://msdn.microsoft.com/en-us/library/gg492088.aspx

但是,如果您进一步阅读文档,您会发现限制和限制:

“不能有唯一约束、主键约束或外键约束。”

这让我很困惑!出于各种原因(数据完整性、语义层可见的关系......)

所以微软提倡数据仓库场景使用聚集列存储索引;但是,它不能处理外键关系?!

我在这方面正确吗?您会建议哪些其他方法?过去,我在数据仓库场景中使用了非聚集列存储索引,对数据加载进行删除和重建。然而,SQL Server 2014 并没有为数据仓库增加真正的新价值??

foreign-key data-warehouse sql-server columnstore sql-server-2014

20
推荐指数
2
解决办法
5880
查看次数

TSQL 与 SSIS 查找

我试图为 SSIS 查找组件找到一些性能良好的 Tsql 等效项。特别是对于事实表加载。

在几个不同的查询模式之后,最 obv 表现最好:

 INSERT INTO Fact WITH (TABLOCK)
 SELECT 
  F.Attribute1,
  ...
  d1.DimAId,
  d2.DimBId,
  d3.DimCId,
  ...
  F.Amount
  ...
  from Staging.dbo.GeneralLedger F WITH(NOLOCK)

  LEFT OUTER JOIN  DimA1 d1 WITH(NOLOCK)
                on d1.AId = F.AId

  LEFT OUTER JOIN DimB d2 WITH(NOLOCK)
                on d2.BId = F.BId

  LEFT OUTER JOIN DimC d3 WITH(NOLOCK)
                on d3.CId = F.CId
Run Code Online (Sandbox Code Playgroud)

性能方面,我用 500 万行和 9 个维度的查找对此进行了测试。

SSIS:1 分 14 秒 TSQL:1 分 14 秒

如果我在更大的数据集(+100M 行)上选择 TSQL 而不是 SSIS,这将是什么意思 目前我在 200GB RAM 服务器上测试了这个,所以在内存中安装所有内容都没有问题。

但是我想如果这个查询将在内存较少的机器上使用,它将开始溢出到磁盘并严重损害性能。SSIS 会在内存方面更有效率。我对这个假设是否正确? …

data-warehouse sql-server ssis t-sql

5
推荐指数
1
解决办法
2437
查看次数

SQL Server DROP 数据库处于长时间回滚过程中

我有一个需要很长时间才能回滚事务的数据库。这可能是正常的,因为它正在回滚大量数据。

但是,我有脚本可以再次创建数据库,并且只想删除数据库,以便停止回滚...

我怎样才能做到这一点?

已经谢谢了!

亲切的问候

sql-server

5
推荐指数
1
解决办法
4807
查看次数