【问题标题】:Which systems memory will be used by ssis package?ssis 包将使用哪些系统内存?
【发布时间】:2012-05-24 16:08:58
【问题描述】:

关于 ssis 包中的内存使用情况,我有几个问题。

  1. 如果我将数据从服务器 A 加载到服务器 B 并且 ssis 包在我的桌面系统中并通过 BIDS 运行,是否会在我的桌面系统中创建缓冲区(内存使用)?如果这是情况下,性能(与服务器相比内存较低)会很慢吗?

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

  3. 请帮帮我,如果我有 3 个 ssis 开发人员,并且一次都在开发不同的包,那么最好的开发方法是什么?

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    为了扩展#3,我发现允许团队处理单个 SSIS 解决方案的最佳方法是将问题(包)分解为越来越小的块,并通过父子/主控来控制它们的调用-slave类型关系。

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

    所有这些的目标是将开发过程分解为可管理的块,以避免并发访问单个包。合并 XML 不会有效地利用您的时间。

    所有这一切的唯一共享资源是 SSIS 项目文件 (dtproj),它只是一个 XML 文档,枚举了危害项目的包。使用命名良好的空白包创建一个前期框架项目,您可能可以跳过一些最初围绕人们尝试将项目合并回您的存储库的痛苦。我发现一次性类型的合并要好得多,至少对于 TFS,比每个人重新检查他们的 XML glob 都要好。

    【讨论】:

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

      2. 如果服务器资源是指服务器 CPU,则不能。就像使用网络上任何其他计算机的资源一样。当然,如果您有一个在 SQL Server 上运行 select 的 OleDBSource,那么“运行”该 select 的 CPU 显然将是 SQL Server 上的 CPU,但是一旦检索到结果集,它将由包所在的计算机处理正在运行。

      3. 与任何其他开发方法一样。如果你有一个由 3 位开发人员开发的 C# 项目的课程,你是怎么做的?您可以让每个开发人员处理同一个文件并合并更改,毕竟一个包是一个 xml 文件,但更复杂。我不会推荐。我遇到过不止一个开发人员在同一个包上工作但不是在同一时间工作的情况。

      【讨论】:

        【解决方案3】:

        扩展 Diego 和 Bill 的答案:

        1) Diego 基本上是正确的,我只想补充一点:程序包在运行它的计算机上运行,​​但更糟糕的是,通过 BIDS 运行程序包甚至与您在服务器上看到的程序相差甚远,因为该过程BIDS用来运行包的是一个本地运行的32位进程。由于与在 32 位子系统中运行相关的限制,以及通过网络将缓冲区的所有数据复制到工作站内存中的缓冲区,在包流动时对其进行转换,然后再次推送,您会变慢通过网络连接到您的目标服务器。这适用于在测试环境中测试数据的一小部分子集,但不应用于评估服务器系统上的性能。

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

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

        【讨论】:

        • 感谢您的所有确认,+1,因为您在项目 1 上添加了很好的信息
        • 无论是否为 32 位,在 BIDS/SSDT 中运行都会使用调试器将进程包装起来,从而进一步减慢它的速度。更准确的测试(内存、吞吐量等)是从命令行调用包(dtexec /file C:\path\to\myPackage.dtsx)
        猜你喜欢
        • 1970-01-01
        • 2023-04-08
        • 2013-01-12
        • 2019-12-16
        • 2010-11-17
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多