SSIS ETL解决方案需要每小时导入600000个小型简单文件。什么是最佳代理调度间隔?

SSIS ETL解决方案需要每小时导入600000个小型简单文件。什么是最佳代理调度间隔?,ssis,Ssis,硬件、基础设施和冗余不在本问题的范围内 我正在构建一个SSIS ETL解决方案,每小时需要导入约600000个小而简单的文件。在我当前的设计中,SQL代理运行SSIS包,它接受“n”个文件并处理它们 每个批处理的文件数“n”是可配置的 SQL代理SSIS包的执行是可配置的 我想知道上述方法是否是正确的选择?或者,我必须在SSIS包中有一个无限循环,并继续获取/处理文件 因此,问题归结为无限循环与批处理+调度之间的选择。还有其他更好的选择吗 谢谢在类似的情况下,我每分钟运行一个代理作业,并处理

硬件、基础设施和冗余不在本问题的范围内

我正在构建一个SSIS ETL解决方案,每小时需要导入约600000个小而简单的文件。在我当前的设计中,SQL代理运行SSIS包,它接受“n”个文件并处理它们

  • 每个批处理的文件数“n”是可配置的
  • SQL代理SSIS包的执行是可配置的
我想知道上述方法是否是正确的选择?或者,我必须在SSIS包中有一个无限循环,并继续获取/处理文件

因此,问题归结为无限循环与批处理+调度之间的选择。还有其他更好的选择吗


谢谢

在类似的情况下,我每分钟运行一个代理作业,并处理所有存在的文件。如果作业需要5分钟才能运行,因为有很多文件,那么代理会跳过计划的运行,直到第一次运行完成,这样就不用担心两个进程会相互冲突。

在类似的情况下,我每分钟运行一次代理作业,并处理所有存在的文件。如果作业需要5分钟才能运行,因为文件太多,代理将跳过计划的运行,直到第一次运行完成,这样就不用担心两个进程会相互冲突。

使用WMI事件查看器watcher了解新文件是否到达,下一步您可以调用作业计划程序来执行或直接执行ssis包

有关WMI事件的更多详细信息


使用WMI事件查看器watcher了解新文件是否到达,下一步您可以调用作业计划程序来执行或直接执行ssis包

有关WMI事件的更多详细信息

SSIS是正确的工具吗? 也许吧。让我们从数字开始

600000个文件/60分钟=10000个文件/分钟

600000个文件/(60分钟*60秒)=每秒167个文件

不管你使用什么技术,你都会看到一些极端情况。Windows NTFS开始阻塞文件夹中的文件,因此除了定期使用外,您还需要使用一些文件夹策略来保持倒计时

2008年,SSIS团队设法加载了所有源于磁盘的数据,因此SSIS可以很好地运行。它也可能表现得非常糟糕,这就是我如何设法获得~36k点的独角兽点数的原因

在计算世界中,6年是一辈子的时间,因此您可能不需要像SSIS团队那样采取激烈措施来设定基准,但您需要了解他们的方法。我知道你说过硬件不在讨论范围之内,但它包含了很多内容。如果文件系统(san、nas、本地磁盘、闪存或其他)无法为600k文件提供服务器,则您将永远无法清除工作队列

您的目标是让尽可能多的员工参与处理这些文件。在这方面,该方法可能非常有效。基本上,一个过程会问:有工作要做吗?如果是这样的话,我会花点时间去做。然后你就扩大了要求和做工作的工人的数量。这里的挑战是确保您有某种机制来防止工作人员处理相同的文件。也许这就像按目录、文件名或其他适合您情况的机制进行过滤一样简单

我认为您正在采用这种方法,这是基于您对处理N个文件的代理作业的问题定义,但希望为您的模式命名,以便进一步研究

我同意JoeC的答案——根据需要安排SQL代理作业的运行频率。如果它已经在运行,则不会产生第二个进程。也许你会有多个每分钟都会启动的代理-AgentFolderA、AgentFolderB。。。AgentFolderZZH和他们各自启动一个主程序包,然后有子流程寻找工作。

SSIS是正确的工具吗? 也许吧。让我们从数字开始

600000个文件/60分钟=10000个文件/分钟

600000个文件/(60分钟*60秒)=每秒167个文件

不管你使用什么技术,你都会看到一些极端情况。Windows NTFS开始阻塞文件夹中的文件,因此除了定期使用外,您还需要使用一些文件夹策略来保持倒计时

2008年,SSIS团队设法加载了所有源于磁盘的数据,因此SSIS可以很好地运行。它也可能表现得非常糟糕,这就是我如何设法获得~36k点的独角兽点数的原因

在计算世界中,6年是一辈子的时间,因此您可能不需要像SSIS团队那样采取激烈措施来设定基准,但您需要了解他们的方法。我知道你说过硬件不在讨论范围之内,但它包含了很多内容。如果文件系统(san、nas、本地磁盘、闪存或其他)无法为600k文件提供服务器,则您将永远无法清除工作队列

您的目标是让尽可能多的员工参与处理这些文件。在这方面,该方法可能非常有效。基本上,一个过程会问:有工作要做吗?如果是这样的话,我会花点时间去做。然后你就扩大了要求和做工作的工人的数量。这里的挑战是确保您有某种机制来防止工作人员处理相同的文件。也许这就像按目录、文件名或其他适合您情况的机制进行过滤一样简单

我认为您正在采用这种方法,这是基于您对处理N个文件的代理作业的问题定义,但希望为您的模式命名,以便进一步研究

我同意JoeC的答案——根据需要安排SQL代理作业的运行频率。如果它已经在运行,则不会产生第二个进程。也许你会有多个每分钟都会启动的代理——Ag