mysql-使用SQL命令中的“按/排序”和合并联接为数百万行优化SSIS
嗨,我目前正在尝试执行Upsert / delete来优化SSIS包,该Upsert / delete处理来自远程MariaDB源中的表的约9,300万行. 当前,我在程序包中使用“排序和合并联接”,但正如我阅读的一些指南所建议,建议在服务器中而不是在SSIS DT中使用排序功能来对服务器进行排序,因为这会对SSIS服务器内存造成负担. 由于我当前在Azure数据工厂中使用此解决方案,因此运行程序包会失败(即使我增加了程序包端和Azure数据工厂中的“超时”属性,但多数情况下都是超时). 建议的解决方法是什么? 如果我理解正确并且如前所述,则可以通过对DB-Server-Side进行排序来跳过SISS服务器上的负载.但是由于我是整个SQL和SSIS的新手,所以我不太确定SQL Command中的排序方式如何. 我也虽然有关于批处理的信息,但是即使在这里,我也不确定如何在SSIS中工作. 这里推荐什么? 我的SSIS软件包现在看起来像这样: 我遵循了此类示例:Synchronize Table Data Using a Merge Join in SSIS (仅供参考:红色错误图标在那里,是因为我在屏幕截图期间失去了连接,否则,这是一个完全正常的解决方案.) 最佳答案 我有两个建议:服务器端排序 在“ OLE DB源”中,将访问模式更改为“ SQL命令”.并使用ORDER BY子句:
之后,您应该打开OLE DB源高级编辑器(右键单击OLE DB源,显示高级编辑器),转到“列”选项卡,将outputIsSorted属性更改为True,并设置更改ORDER BY子句中使用的列的SortKeyPosition. > SSIS sorted data flows 分块读取数据 我对MariaDB SQL语法不了解,但是我将在SQLite和Oracle中提供一些示例: > Reading Huge volume of data from Sqlite to SQL Server fails at pre-execute 更新1-包问题 软件包中存在一些问题: >您正在同一张桌子上写字 一些建议: >尝试使用暂存表而不是从同一表读取和写入,因为您正在从同一目标表读取,写入,删除和更新. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |