我有大量现有的 SSIS 批次。现在 Sybase db 中的某些表在不同阶段被 ssis 包多次(4-5)访问。在每次访问中都有不同的连接或某些过滤条件。现在我意识到每次访问表时都会发生 2 个活动(1.tables 的数据页需要读取,2. 数据需要通过 SSIS 服务器上的网络传送。)现在我想知道我是否可以最初只带整个表数据(所有记录)发送到 SSIS 服务器,然后对表的所有后续访问都在 SSIS 服务器上进行。现在的问题是这些表数据可以存储在 SSIS 服务器上的哪个位置,如果我可以在内存(在 RAM 中)中缓存表数据,而不是这样,或者可能在硬盘上。我对 SSIS 的 SSIS 效率不是很高,所以寻求帮助“有没有办法在 SSIS 中实现这一点?”
您没有指定您正在使用的 SSIS 版本,但除了 Praveen 对原始文件 (+1) 的建议之外,如果您使用的是 2008 到当前版本,您还可以查看缓存连接管理器。CCM 既提供内存存储,也可以指定将内容写入文件以平衡内存压力。
在平衡原始文件与缓存连接管理器的选择时,您需要了解您的使用情况。原始或平面文件可以是数据流源,而 CCM 不能。相反,CCM 可以是查找转换的源,而文件连接不能
在权衡使用文件存储机制时要记住的一件事是您会丢失索引。假设您的查询按州细分客户。该数据库在检索“安得拉邦所有活跃客户”方面将比读取整个文件以查找符合该标准的记录更有效。当奥里萨邦客户的请求发生变化时,可以使用相同的索引,但必须从头到尾重新处理文件存储以查找满足条件的记录。索引效率的提高可能足以克服将数据保存在源系统上的网络和读取成本。
与往常一样,测试并找到最适合您的方法。