DB2LUW并行作业执行

DB2LUW并行作业执行,db2,job-scheduling,db2-luw,dbms-job,Db2,Job Scheduling,Db2 Luw,Dbms Job,我一直在DB2LUW数据库中工作,我想将过程作为并行作业提交。这意味着我有一个程序,它将对一个表执行一些DDL、DML语句。这个表有大量的数据,同样的过程需要为几个并行运行的表运行 我使用DBMS_job.submit语句提交作业,并使用DBMS_job.RUN语句执行作业。我有一个作业处理程序,它有助于并行地完成这项工作 但每个作业都是按顺序执行的(即第一个作业完成后,第二个作业开始,第二个作业完成后,第三个作业开始) **我的第一个问题** 如何并行运行DBMS_作业 我面临的第二个问题是c

我一直在DB2LUW数据库中工作,我想将过程作为并行作业提交。这意味着我有一个程序,它将对一个表执行一些DDL、DML语句。这个表有大量的数据,同样的过程需要为几个并行运行的表运行

我使用DBMS_job.submit语句提交作业,并使用DBMS_job.RUN语句执行作业。我有一个作业处理程序,它有助于并行地完成这项工作

但每个作业都是按顺序执行的(即第一个作业完成后,第二个作业开始,第二个作业完成后,第三个作业开始)

**我的第一个问题** 如何并行运行DBMS_作业

我面临的第二个问题是cutrent会话仍在等待完成所有作业。我无法使用该特定会话,一旦所有作业完成,我就可以访问该会话

**我的第二个问题** *如何使会话可访问,而不是等待所有作业完成*


先生/女士,请帮助我。

DBMS\u作业是与Db2 LUW的管理Taks调度程序(ATS)的接口,以便与Oracle RDBMS兼容。但是,您也可以通过ADMIN\u TASK\u ADD和相关过程,直接独立于DBMS\u作业使用ATS

我的经验是db2acd(实现自主操作(包括ATS)的过程)特别是当ulimit被错误配置时,它是不可靠的,并且在某些情况下它不会无声地运行作业。它还有5分钟的唤醒时间来检查可能会失败的新作业,并且它需要一个已经激活的数据库,这对于某些用例来说是不方便的

我不建议在应用层功能中使用DB2ATS。全功能企业调度器的存在是有充分理由的

对于并行调用,如果可用,我将使用企业调度工具,如果不行,则在Db2服务器上或最坏情况下在客户端使用操作系统提供的调度器,在这两种情况下都要注意,每个存储过程调用都是其自己的调度作业,具有自己的Db2连接

通过对每个存储过程调用使用Db2连接,并对它们进行并行调度,只要它们的操作不会引起相互争用,就可以并行运行

除上述工作外,我相信只要工作定义正确,ATS将同时启动工作。 检查ADMIN_TASK_列表和ADMIN_TASK_STATUS管理视图的内容,并用db2diag条目进行验证(diaglevel 4可能会提供更多详细信息,即使您必须暂时使用它)

对SQL PL(或PL/SQL)存储过程的调用相对于调用方是同步的,这意味着Db2连接将被阻止,直到存储过程返回。如果会话正在等待存储过程完成,则无法“使会话可访问”,但可以打开新连接


存储在C或C++中的不同选项,或者java或C++/CLR。它们有更多的自由。对于消息传递/基于代理的解决方案,存在其他选项。UCH依赖于可用的技能集、工具集和经验。但是一般来说,保持它的简单性是有可能的。

dBMSY-JOBE是管理TSC的接口。Db2 LUW的调度程序(ATS),以便与Oracle RDBMS兼容。但是,您也可以通过ADMIN_TASK_ADD和相关过程,直接独立于DBMS_作业使用ATS

我的经验是db2acd(实现自主操作(包括ATS)的过程)特别是当ulimit被错误配置时,它是不可靠的,并且在某些情况下它不会无声地运行作业。它还有5分钟的唤醒时间来检查可能会失败的新作业,并且它需要一个已经激活的数据库,这对于某些用例来说是不方便的

我不建议在应用层功能中使用DB2ATS。全功能企业调度器的存在是有充分理由的

对于并行调用,如果可用,我将使用企业调度工具,如果不行,则在Db2服务器上或最坏情况下在客户端使用操作系统提供的调度器,在这两种情况下都要注意,每个存储过程调用都是其自己的调度作业,具有自己的Db2连接

通过对每个存储过程调用使用Db2连接,并对它们进行并行调度,只要它们的操作不会引起相互争用,就可以并行运行

除上述工作外,我相信只要工作定义正确,ATS将同时启动工作。 检查ADMIN_TASK_列表和ADMIN_TASK_STATUS管理视图的内容,并用db2diag条目进行验证(diaglevel 4可能会提供更多详细信息,即使您必须暂时使用它)

对SQL PL(或PL/SQL)存储过程的调用相对于调用方是同步的,这意味着Db2连接将被阻止,直到存储过程返回。如果会话正在等待存储过程完成,则无法“使会话可访问”,但可以打开新连接


存储在C或C++中的不同选项,或者java或C++ +CLR。它们有更多的自由。对于消息传递/基于代理的解决方案,存在其他选项。UCH依赖于可用的技能集、工具集和经验。但是一般来说,保持它的简单性是有帮助的。

谢谢您的详细答复,让我试试这个毛。谢谢你的详细回复,让我试试这个。