如何在多个查找之间重用缓存

时间:2013-01-23 10:11:13

标签: ssis

我有一个SSIS2008软件包,它逐步加载一个包含10M记录的表客户端和一个包含6M记录的表ClientRelations。客户关系是两个客户之间的关系。

在RelatedClientsETL数据流中,我从平面文件源获取关系,并在同一个Clients表上进行2次查找。

在这里使用缓存连接管理器会不会很好,或者我应该在两次查找中使用部分缓存查找选项吗?或者你建议另一种选择吗?

执行此程序包的生产SQL Server的内存= 8GB

1 个答案:

答案 0 :(得分:1)

通常最好在查找中使用Full Cache mode,因为这会减少database load,从而减​​少数据库上hits的数量。因为你有足够的内存来保存数据,我建议您应该使用完全缓存.SSIS使用buffer-oriented architecture来有效地加载和操作memory中的数据集,因此在此模式下查找速度会更快。

通常避免使用

Partial cache modenot a better choice。仅在需要处理的行数较少的情况下才有用。只有在找到匹配项时才会缓存数据。但是没有在Full Cache的情况下执行预执行缓存,因此加载时间很快,但是对数据库的命中次数更多。

当您想要重新使用缓存来减少CCM时,会使用

Cache Connection Managerdatabase load),但是您需要再次使用OleDB connection vs CCM来测试自己在查找中。

有一个免费工具bidshelper可以帮助您监控单个任务的性能,否则会尝试隔离目标和除lookpup和source之外的其他组件。 使用RowCount转换替换目标并通过检入执行结果选项卡(时间,行数)来衡量性能。对Full CacheCCM

执行此操作

有一个whitepaper可以很好地解释整体SSIS性能