Pra*_*ngh 2 sql-server partitioning
我正在探索使用 SSIS 将大型数据集加载到目标表中。我遇到了“分区切换”作为将数据更快地加载到目标表的方法之一。
但是由于临时表必须与目标表分区具有几乎相同的配置才能进行分区切换,那么这里真正的好处是什么?
我担心的是在清理/转换后加载数据。如果临时表与目标分区完全相同,则两者的加载时间应该相同。还是将数据加载到巨大的分区聚集索引表中比加载到完全相同的空未分区聚集索引表中需要更多时间?
我们仍然需要填满临时表(它与目的地几乎相同),它需要与直接在目的地分区中加载数据相同的时间,对吧?为什么不直接加载到目的地呢?
就在这里加载数据的时间而言,真正的好处是什么?
速度是这里的游戏名称。您可以将大量数据加载到临时表中,然后将其切入,这会减少对主表上的锁/资源的争用量(但请注意,当您重新切入时,虽然速度非常快,但确实需要锁定主表上的锁/资源)主表)。它允许您在暂存时操作和清理数据,这样您就不会在导入后不必要地访问主表。来自源的初始加载也可以更快,所以如果这对你来说是一个瓶颈,它可能是一个好处。
作为一个粗略的例子,我曾经使用过一个大型数据库,每天将平面文件加载到数据库中,加载中大约有一百万行。批量直接插入表需要大约 4 个小时。使用表分区策略加载到声明和切换需要 1 小时 30 分钟。并且只有 < 1 分钟是击中主表的开关。
每种情况都不同,尝试和玩耍,看看它是否值得,即使它不是很好的体验。
还是将数据加载到巨大的分区聚集索引表中比加载到完全相同的空未分区聚集索引表中需要更多时间?
是和否,它与索引和表中已有的数据量有关,如果您的索引不是分区对齐的(分区索引),无论如何它们应该是为了充分利用分区,否则插入将受到巨大打击,还有从主表访问的数据,如果查询没有消除在插入时也会导致问题的分区。使用登台的另一个好处是,如果加载失败,您只需删除登台表,而不是清理主表。
| 归档时间: |
|
| 查看次数: |
2331 次 |
| 最近记录: |