ssis设计器和拆分包

yshpjwxd  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(303)

我有一个大的解决方案,这是目前在一个大的包。我已经开始将包拆分为更小的包,但注意到在运行解决方案时,sql server上使用了更多的内存。
其他人在使用多个软件包时见过这种情况吗?

d5vmydt9

d5vmydt91#

sqlserver,sqlservr.exe,通常是作为一个服务运行的,当你使用它时,它会继续消耗内存,直到它把所有的内存都吸干,windows强制它恢复。这是通过设计的,因为当数据库在内存中有尽可能多的数据时,它的性能最好,而不是必须从磁盘读取数据。您应该将sql server示例配置为具有最大内存,以便操作系统有足够的空间呼吸。你应该保留多少内存?
sql server integration services ssis在其自己的地址空间中运行—即使您可以从sql server启动它,您也会看到它dtexec.exe处理内存请求,并且在进程崩溃的情况下,它不会关闭sql server。这是一件非常好的事情,分离。从实际的Angular 来看,这意味着如果要在计算机上运行ssis包,就需要为ssis留出足够的内存来运行,猜猜看,ssis是一个非常快的程序 in-memory etl解决方案。ssis数据流任务将尽可能多地将数据保存在内存中,以便在将数据写入目标之前对其进行操作(更改数据类型、查找等),因为io是etl中最昂贵的部分。
但是,在开发这些包时,您需要从visualstudio devenv.exe运行它们。vs/ssdt需要内存来完成它的任务。嘿,当您从visualstudio运行一个ssis包时,它被 Package 在调试器调用中(不能调用进程名),而且它占用的内存太多,无法提供调试功能。
遗憾的是,为开发人员机器分配4G的ram是不够的。如果这是一台服务器,仅授权成本就足以让最大化内存消耗的成本相形见绌。
如果是我,我会将sql server的容量限制在1.5 gb左右。对于sqlserver来说,在gig下做很多事情通常是不够的。假设visualstudio和调试器在事情变得热火朝天的时候可以处理大约2个gig。剩下的0.5 Gig留给操作系统(outlook、excel、windows资源管理器、指向stackoverflow和msdn文档的web浏览器和垃圾,我们的内存不足)
通过ssis解决内存使用问题。我会认为,但没有测试,1个包与10个数据流串行连接与10个包与1个数据流每个,单片包将消耗更多的内存,因为它将验证所有的数据流时,它启动。是的,有启动开销是由单片方法共享的,它将分配给每个单独的包,但我无法想象它会有任何意义。另外,一旦dtexec进程完成,内存就会返回到操作系统。它不像sqlserver那样在进程循环之前一直保留内存。

相关问题