【发布时间】:2009-11-09 14:16:18
【问题描述】:
我们每天都有数 GB 的文件通过 SSIS 包加载到 SQL Server 2005 实例。为了将这些大数据文件异步加载到 SQL Server,我们构建了多线程 .NET 应用程序。此应用程序使用 DTSExec 命令行可执行文件来调用 SSIS 包。它还为每个队列实例化 5 个队列和 5 个流。因此,总共可以同时加载 25 个文件。
这个应用程序,比如“AsyncLoader”,与 SQL Server 2005 实例和 SSIS 实例位于同一台机器上。服务器机器很大。 32 个 CPU、128 GB 内存、SAN 等。我们将 5% 的内存分配给操作系统,其余内存保留给 SQL Server 2005 实例。这是我的选择;
1) 将 SSIS 实例和 AsyncLoader 移动到自己的机器上,以便 DTSExec 拥有自己的大内存空间来工作。消除 SQL Server 机器上的 SSIS CPU 周期。
2) 将所有播放器(SQL Server、SSIS、AsyncLoader)保持在同一台机器上,并将 SQL Server 上分配的总内存减少到 75%,以便 DTSExec 有更多内存可以运行。
目前,我们没有太多时间来为每个解决方案进行概念验证工作或基准测试。我只是想让你们的想法,看看其他人是否有这种设置以及最佳实践是什么。此外,将包从一台机器转移到另一台机器是一个巨大的负担,所以即使选项 1 看起来如此明显,我们需要确凿的事实来看看它是否会带来可观的性能提升。
【问题讨论】:
-
还有一件事;上周 AsyncLoader 进入了一个无限循环并导致数据库服务器崩溃。这又为将服务和 SSIS 移到自己的机器上投了赞成票。如果应用程序使服务器计算机崩溃,数据库服务器仍将启动并运行。
标签: .net database sql-server-2005 ssis