1

我有大量现有的 SSIS。现在 Sybase db 中的某些表在不同阶段被 ssis 包多次 (4-5) 访问。在每个访问中都有不同的连接或某些过滤条件。现在我意识到每次访问表时都会发生 2 个活动(1.tables 的数据页需要读取,2.需要通过 SSIS Server 上的网络获取数据。)现在我想知道我是否可以最初带来整个表数据(所有记录)到 SSIS 服务器,然后对表的所有后续访问都在 SSIS 服务器上进行。现在的问题是这些表数据可以存储在 SSIS 服务器上的什么位置,如果我可以在内存中(在 RAM 中)缓存表数据,或者可能在硬盘上。我对 SSIS 的 SSIS 效率不是很高,因此寻求帮助“有什么方法可以在 SSIS 中实现这一点吗?”

4

2 回答 2

5

您没有指定您使用的 SSIS 版本,但除了 Praveen 对原始文件 (+1) 的建议之外,如果您使用 2008 到当前版本,您还可以查看缓存连接管理器。CCM 既提供内存存储,也可以指定将内容写入文件以平衡内存压力。

在平衡原始文件与缓存连接管理器的选择时,您需要了解您的使用情况。原始文件或平面文件可以是数据流源,而 CCM 不能。相反,CCM 可以作为查找转换的来源,而文件连接不能

在权衡使用文件存储机制时要记住的一件事是您会丢失索引。假设您的查询按州对客户进行细分。该数据库在检索“Andhra Pradesh 的所有活跃客户”方面将比读取整个文件以查找符合该条件的记录要高效得多。当奥里萨邦客户的请求发生变化时,可以使用相同的索引,但文件存储必须从头到尾重新处理,以查找满足条件的记录。索引效率的提高可能足以克服将数据保存在源系统上的网络和读取成本。

与往常一样,测试并找到最适合您的方法。

于 2012-08-16T14:13:57.953 回答
3

如果您需要缓存数据,那么您可以将其存储在 SSIS 中创建的flat fileraw filetemporary table创建中。从平面文件访问数据总是比从 RDBMS 访问数据要快。如果多次访问,您的数据库可能会占用大量资源次。

与平面文件相比,原始文件在读取或写入数据时可以非常快。本文解释了两者之间的性能。

我的建议是,如果您的临时数据没有被 SSIS 以外的任何其他工具使用,那么您可以使用原始文件

一篇解释在 SSIS 中使用临时表的文章,该临时表可用于具有相同连接的多个数据流任务(RetainSameConnection property=True)

于 2012-08-16T12:53:37.597 回答