我有一个SSIS2008软件包,它逐步加载一个包含10M记录的表客户端和一个包含6M记录的表ClientRelations。客户关系是两个客户之间的关系。
在RelatedClientsETL数据流中,我从平面文件源获取关系,并在同一个Clients表上进行2次查找。
在这里使用缓存连接管理器会不会很好,或者我应该在两次查找中使用部分缓存查找选项吗?或者你建议另一种选择吗?
执行此程序包的生产SQL Server的内存= 8GB
答案 0 :(得分:1)
通常最好在查找中使用Full Cache mode
,因为这会减少database load
,从而减少数据库上hits
的数量。因为你有足够的内存来保存数据,我建议您应该使用完全缓存.SSIS使用buffer-oriented architecture
来有效地加载和操作memory
中的数据集,因此在此模式下查找速度会更快。
Partial cache mode
,not a better choice。仅在需要处理的行数较少的情况下才有用。只有在找到匹配项时才会缓存数据。但是没有在Full Cache
的情况下执行预执行缓存,因此加载时间很快,但是对数据库的命中次数更多。
CCM
时,会使用 Cache Connection Manager
(database load
),但是您需要再次使用OleDB connection vs CCM
来测试自己在查找中。
有一个免费工具bidshelper可以帮助您监控单个任务的性能,否则会尝试隔离目标和除lookpup和source之外的其他组件。
使用RowCount转换替换目标并通过检入执行结果选项卡(时间,行数)来衡量性能。对Full Cache
和CCM
有一个whitepaper可以很好地解释整体SSIS性能