Cha*_*Jha 5 sql-server parallel-processing performance ssis etl
我们有一个 SSIS 包,显然被开发团队称为“慢”。由于他们没有使用 SSIS ETL 的人,因此作为 DBA,我尝试深入研究。以下是我找到的信息:SQL Server 已从 2014 版本升级到 2017,因此它具有两个版本的 SSIS。
select * from view——视图只是包含没有其他花哨连接的表。SQL 和 SSIS 都在同一台服务器上。SQL 已分配最大内存,为 SSIS 和 OS 留下大约 100 GB。
请分享有关如何强制 SQL Server 使用多个线程运行此 select 命令以便整个表更快地进入 SSIS 缓冲池的任何想法。
编辑:我知道bcp可以比任何进程更快地读取数据并将其保存到平面文件,但此时对 SSIS 包的更改必须保持最少,并探索可以合并到 SSIS 包中的选项。
Edit2 : Parallelism 非常适合我的 SQL Server,因为我验证了很多其他查询。有问题的表是 200 GB。这只是 SSIS 的东西,它并没有像它应该的那样努力地敲打我的数据库。
Edit3:我取得了一些进展,将缓冲区值调整为 100 MB,将最大行数调整为 100000,现在包似乎做得更好了。当我直接使用 dtexec 实用程序在服务器上运行这个包时,它会产生每秒 40-50 MB 的良好负载,但通过 SQL 作业它永远不会产生超过 10 MB 的 lod。所以我想弄清楚这种行为。
Edit4:我发现当我直接从登录到服务器并调用 dtexec 实用程序运行包时,它运行良好,因为它在数据库上产生了良好的负载,导致数据 I\O 在 30-50 MB\sec 之间保持稳定。SQL 作业中的同一件事永远不会超过 I\O 超过 10 MB\sec。
我什至尝试使用代理运行包并选择 cmdline 操作但没有更改。特工真的很糟糕,这里有什么问题吗?
最后的尝试:我对我最后的观察感到困惑:1)通过调用 dtexc 实用程序从 Windows 节点的命令提示符运行时,同一个包的运行速度提高了 3 倍 2)当由 SQL 代理调用时,完全相同的包运行速度比上面慢 3 倍Windows 和 SQL Server 上的 sysadmin 权限
在这两种情况下,我都尝试查看它们调用的 DTEXEC 版本,并且它们都调用了相同的版本。那么为什么一个人会这么慢是我的理解。
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |