首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时在数据仓库ETL中禁用和重新创建索引?

何时在数据仓库ETL中禁用和重新创建索引?
EN

Database Administration用户
提问于 2019-02-02 15:58:36
回答 1查看 819关注 0票数 1

我们正在将数据从暂存数据库转移到Kimball数据仓库DB中。对于何时禁用和重建索引,我听到了不同的想法。每个新的负载每天都会截断舞台表。假设我们有一个客户事务表,2000万行,5GB。初始负载为20mil,增量为每天10万行(不足5%)。

我正在阅读它最好的禁用索引的新批处理新负载。

(a)如果舞台表每天被截断,对于阶段:我是否应该每天禁用索引和重新启用?

代码语言:javascript
复制
Alter index all on dbo.[StageTable] disable

Insert Into StageTable values (CustomerId, SalesDate, SaleAmount)...

Alter index all on dbo.[StageTable] rebuild

在实际数据仓库中,

(b)是否应重新启用和重建初始负荷索引。我是否应该为增量负载做这件事,这也是次要的?

代码语言:javascript
复制
Alter index all on dbo.[DWTable] disable

Insert Into StageTable values (CustomerId, SalesDate, SaleAmount)...

Alter index all on dbo.[DWTable] rebuild
EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-02-02 21:47:01

答案取决于以下几个因素:

  • 你的目标是什么:最小的I/O?最短的装载时间?设置最小的工作量? 24/7查询性能?
  • 索引有多重:只有一个有on列的索引不会有多大的区别,但是有很多列的几个索引将产生显着的差异。
  • 瓶颈是什么?如果数据负载正在穿越网络,如果您正在写入高性能的SSD子系统,则写入磁盘可能不是瓶颈。如果您能够以最快的速度编写表和索引,那么您就没有办法让它变得更快。

所以,确定你的目标是什么,然后测试每个方法。对于5GB的负载,它应该是一个快速的测试。

尽管如此,对于5GB的负载,我不会费心去优化它。SQL Server只需几秒钟就可以编写它。选择一个策略并运行它--如果需要两分钟,那么你只能让它快2分钟--这值得你花时间吗?如果你把它当作一个学习练习,用大量的数据去做--这需要30分钟。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/228755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档