我正在研究用于数据仓库的 SSIS 解决方案,用于提取相应应用程序键的代理键,我正在使用 SSIS 的查找任务,但此任务的问题是它将完整的查找表缓存在其内存中。而且我的查找表大小很大,即 2000 万条记录。因此,如果您可以为查找任务提出一些方法或替代方案
问问题
2904 次
4 回答
1
我不认为包含 2000 万条记录的表太大而无法查找。您可以进行一些过滤,并通过在查找中仅选择所需的列,您可以优化它以使用少量内存。
例如,如果您有一个 int 类型的键列和一个大小为 10 的 varchar 列进行查找,则一条记录将占用 4+10bytes 和 2000 万个到 20Mx(4+10) ~= 280MB 这不能被认为太高.
尽管如此,如果你想减少内存使用,你将不得不使用连接。
于 2009-10-23T05:27:34.090 回答
0
当您将数据带入 SSIS 包时,对您的查找数据执行 LEFT JOIN,然后评估您需要做的事情。
如果查找表位于不同的源中,那么您可以在 SSIS 中执行 LEFT JOIN,但这也会缓存行。我认为 JOIN 可能比 Lookup 快一点。
于 2009-10-22T12:35:30.500 回答
0
你必须扫描整个表吗?即您可以将您的查找指定为表上的数据库视图,甚至可以将其指定为 SQL 查询的结果(使用 SQL 查询选项的结果)
于 2009-10-22T14:11:35.143 回答
0
确保只选择查找表中需要的列,不要缓存不需要的列。找时间看看MS “Project “Real”,它在高数据量应用程序中使用 SSIS 并讨论最佳实践。
于 2009-11-13T14:02:07.107 回答