如何更快地提高mulesoft存储过程插入执行?

时间:2016-08-24 10:25:30

标签: stored-procedures mule-studio anypoint-studio

我创建了一个存储过程来插入90,000条记录并在mule anypointstudio中调用它。但执行那些在perl中执行相同代码并在15分钟内插入的记录需要8个多小时。

我使用批处理来处理存储过程失败记录。我尝试更改允许的最大线程,但没有找到任何改进。

你能帮助我在实施方面做错吗?

这是我使用的骡子代码:

<batch:job name="Import_users_data" max-failed-records="-1">
    <batch:threading-profile maxThreadsActive="1000" poolExhaustedAction="RUN"/>
    <batch:input>
        <db:stored-procedure config-ref="MyLearn_SQLSERVER_DB_Configuration"  doc:name="Database">
            <db:parameterized-query><![CDATA[{call spFetch_users_data}]]></db:parameterized-query>

        </db:stored-procedure>
        <set-payload value="#[payload.get('resultSet1')]" doc:name="Set Payload"/>
    </batch:input>
    <batch:process-records>
        <batch:step name="users_batch_step">
            <db:stored-procedure config-ref="SQLSERVER_DB_Configuration" doc:name="Database" streaming="true">
                <db:parameterized-query><![CDATA[{call spIns_data_in_users_table(:in_users_id, :in_first_name, :in_last_name)}]]></db:parameterized-query>

                <db:in-param name="in_users_id" type="INTEGER" value="#[payload.USERS_ID]"/>
                <db:in-param name="in_first_name" type="VARCHAR" value="#[payload.FIRST_NAME]"/>
                <db:in-param name="in_last_name" type="VARCHAR" value="#[payload.LAST_NAME]"/>


            </db:stored-procedure>
        </batch:step>
    </batch:process-records>
    <batch:on-complete>
        <logger message="Successfully imported users data.......#['Successfull Records: '+payload.successfulRecords+'Failed Records: '+payload.failedRecords]" level="INFO" doc:name="Logger"/>
        <flow-ref name="Export_data" doc:name="Export_data"/>
    </batch:on-complete>
</batch:job>

1 个答案:

答案 0 :(得分:0)

@shabrinath,尝试将Batch Block Size值增加到高于Batch Scope的默认值100。