设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql-使用SQL命令中的“按/排序”和合并联接为数百万行优化SSIS

发布时间:2021-02-23 03:48 所属栏目:115 来源:网络整理
导读:嗨,我目前正在尝试执行Upsert / delete来优化SSIS包,该Upsert / delete处理来自远程MariaDB源中的表的约9,300万行. 该表还包含大约63列. 当前,我在程序包中使用“排序和合并联接”,但正如我阅读的一些指南所建议,建议在服务器中而不是在SSIS DT中使用排序功

嗨,我目前正在尝试执行Upsert / delete来优化SSIS包,该Upsert / delete处理来自远程MariaDB源中的表的约9,300万行.
该表还包含大约63列.

当前,我在程序包中使用“排序和合并联接”,但正如我阅读的一些指南所建议,建议在服务器中而不是在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子句:

Select * from table ORDER BY col1,col2

之后,您应该打开OLE DB源高级编辑器(右键单击OLE DB源,显示高级编辑器),转到“列”选项卡,将outputIsSorted属性更改为True,并设置更改ORDER BY子句中使用的列的SortKeyPosition.

> SSIS sorted data flows
> Where is the IsSorted property?

分块读取数据

我对MariaDB SQL语法不了解,但是我将在SQLite和Oracle中提供一些示例:

> Reading Huge volume of data from Sqlite to SQL Server fails at pre-execute
> Getting top n to n rows from db2
> SSIS failing to save packages and reboots Visual Studio

更新1-包问题

软件包中存在一些问题:

>您正在同一张桌子上写字
>您正在对大量数据执行更新和删除表
>您正在使用合并联接

一些建议:

>尝试使用暂存表而不是从同一表读取和写入,因为您正在从同一目标表读取,写入,删除和更新.
>在目标表中使用分区,该分区允许从特定分区而不是整个表中删除和更新记录

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读