在OLE DB目标中有一个名为“每批行”的选项,当指定该选项时,它会拉出一批中的一定数量的行,否则,将一个批次中的源中的所有行都拉出。
问题:如果我的源服务器和/或目标服务器都是高度OLTP数据库,则在此参数上设置一个较低的数字(例如10k或50k)有助于减少锁升级的机会,从而使加载过程的影响最小在两个数据库中?
答案 0 :(得分:2)
“每批行数”实际上更多地用于调整数据流。通过计算一行的最大宽度(以字节为单位),然后除以默认缓冲区大小(默认值为10MB),您将获得可以插入一个“批处理”中的行数,而不会将数据溢出到tempdb或您的缓冲磁盘(取决于您是否为临时缓冲区设置了特定位置)。在将数据流完全保留在内存中并且不需要溢出到磁盘的同时,您将使数据传输尽可能快地移动。
OLE DB目标中的“表锁定”选项告诉服务器是否锁定表。
答案 1 :(得分:0)
通常的答案是:是的。 它还取决于行的处理速度和每批的开销。 如果您的事务与批处理中的所有行都花费很长时间,请考虑拆分。但是,将其分成很小的批次也会产生性能问题。
最好的方法是测试并找到最佳点。