2012-05-24 50 views
4

我对ssis包中的内存使用有几个问题。ssis软件包将使用哪些系统内存?

  1. 如果我加载从服务器的数据到服务器B,SSIS包在我的桌面系统,并通过BIDS运行,无论是缓冲创建(内存使用量)将在我的桌面系统发生吗?如果是这样在这种情况下,性能(低内存与服务器相比)将会很慢吗?

  2. 如何启用服务器资源的使用,同时在我的桌面系统开发包?

  3. 请帮助我,如果我有3 SSIS开发商和所有人都在同一时间开发不同的包,什么是最好的开发方法?

回答

4
  1. 是。程序包与启动它的程序在同一台计算机上运行。即使程序加载远程存储在另一台服务器上的程序包,该程序包也会在本地计算机上运行。

  2. 如果服务器资源,你的意思是服务器CPU,你不能。就像使用网络上任何其他计算机的资源一样。当然,如果你有一个在SQL服务器上运行选择的OleDBSource,那么“运行”选择的CPU显然是SQL Server上的那个,但是一旦检索到结果集,它就由包中的计算机处理在跑。

  3. 像任何其他的开发方法。如果你有一个由3位开发人员开发的C#项目的类,那么你怎么做?毕竟一个软件包是一个xml文件,你可以让每个开发人员在同一个文件上工作并合并所做的更改,但是更复杂。我不会推荐。我曾经遇到过不止一个开发人员在同一个软件包上工作但不完全同时工作的情况。

6

要在#3扩张,最好的办法,我发现,让团队能够在单个SSIS解决方案的工作是向下分解的问题(包)为更小的块,并通过家长控制自己的调用 - 小孩/主从式的关系。

例如,该解决方案涉及加载数据仓库。我可能会有2个控制器包,FactController.dtsx和DimensionController.dtsx。他们的责任是调用解决需求的各种软件包(加载事实或维度)。也许我的DimensionProductLoader包处理雪花(它需要更新产品和SubProduct表),以便分解成2个包。

所有这一切的目标是打破下来的发展过程分为管理的块,以避免单一封装并发访问。合并XML不会对您的时间产生有用的影响。

所有这一切的唯一共享资源是SSIS项目文件(dtproj)这仅仅是一个XML文档枚举危及项目的包。使用命名空白的包创建一个前期骨架项目,您可以跳过一些围绕试图将项目合并到您的存储库的人的初始痛苦。我发现对于TFS来说,一次性合并的好处至少比每个人都重新检查它们的XML小块更好。

+0

非常好的主意。 – Diego

3

扩展在圣地亚哥和比尔的回答:

1)迭戈有这主要是正确的,我只想补充:包运行它的计算机上运行,​​但更糟的是,通过BIDS运行的程序包甚至不接近您将在服务器上看到的内容,因为进程BIDS用于运行该程序包的是32位本地进程。由于与在32位子系统中运行有关的限制,以及将网络缓冲区中的所有数据复制到工作站上内存中的缓冲区,在您的程序包流动时将其转换,然后再次推动它通过网络到达目标服务器。这适用于在测试环境中测试数据的小型子集,但不应用于估计服务器系统的性能。

2)迭戈有这个正确的。如果您想查看服务器性能,请将其部署到测试服务器并在那里运行。

3)billinkc有这个正确的。 TFS中SSIS的一大缺点是,没有一种在单个包上共享工作的优雅方式。如果您想在一个进程中使用多个开发人员,请将其分解为更小的块,并让每个开发人员仅使用一个开发人员。只要他们不在同一时间开发相同的软件包,你应该没问题。

+1

感谢所有的确认信息+1,因为您在第1项上添加了很好的信息 – Diego

+1

而且在BIDS/SSDT中运行的32位或者不是32位的,运行在调试器上的进程将进一步降低速度。更准确的测试(内存,吞吐量等)将从命令行(dtexec /文件C:\ path \ to \ myPackage.dtsx)调用软件包 – billinkc