“ SSIS OLE DB目标”中的“每批行”是否有助于减少锁定?

时间:2018-12-10 09:19:24

标签: ssis ssis-2012

在OLE DB目标中有一个名为“每批行”的选项,当指定该选项时,它会拉出一批中的一定数量的行,否则,将一个批次中的源中的所有行都拉出。

问题:如果我的源服务器和/或目标服务器都是高度OLTP数据库,则在此参数上设置一个较低的数字(例如10k或50k)有助于减少锁升级的机会,从而使加载过程的影响最小在两个数据库中?

2 个答案:

答案 0 :(得分:2)

“每批行数”实际上更多地用于调整数据流。通过计算一行的最大宽度(以字节为单位),然后除以默认缓冲区大小(默认值为10MB),您将获得可以插入一个“批处理”中的行数,而不会将数据溢出到tempdb或您的缓冲磁盘(取决于您是否为临时缓冲区设置了特定位置)。在将数据流完全保留在内存中并且不需要溢出到磁盘的同时,您将使数据传输尽可能快地移动。

OLE DB目标中的“表锁定”选项告诉服务器是否锁定表。

答案 1 :(得分:0)

通常的答案是:是的。 它还取决于行的处理速度和每批的开销。 如果您的事务与批处理中的所有行都花费很长时间,请考虑拆分。但是,将其分成很小的批次也会产生性能问题。

最好的方法是测试并找到最佳点。

相关问题