Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-8327

Switch on MyBatis batch processing mode

    Details

    • Type: Task
    • Status: Closed
    • Priority: L3 - Default
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 7.8.0, 7.8.0-alpha6
    • Component/s: engine
    • Labels:
      None

      Description

      MyBatis has the special mode of pprocessing SQL statements in batches.

      The task is:

      • to switch it on
      • to measure performance improvement

        Issue Links

          Activity

          Hide
          svetlana.dorokhova Svetlana Dorokhova added a comment - - edited

          Performance test consisted of the following:

          1. FULL history level
          2. Process looks like this:

          BpmnModelInstance process = Bpmn.createExecutableProcess("process")
                .startEvent()
                .serviceTask()
                .camundaClass(NoopDelegate.class.getName())
                .camundaAsyncAfter()
                .serviceTask()
                .camundaClass(UpdateVarDelegate.class.getName())
                .camundaAsyncAfter()
                .serviceTask()
                .camundaClass(DeleteVarDelegate.class.getName())
                .endEvent()
                .done();
          

          3. Process is started with 500 process variables. 1st Service task does nothing, but the transaction is committed after it is completed (asyncAfter). 2nd service task update all 500 process variables with new values and the transaction is committed afterwards. 3rd service task removes all the variables and process finishes.

          The testing was done with the help of QA Performance test suite. It was running the test in 2 threads with 50 repeations. The result are the following:

          - Oracle 12 Mysql 5.7.17 SQL Server 2014
          SIMPLE mode 196696 135528 264003
          BATCH mode 58012 128714 94147

          It looks like MySQL does not distinguish batch and not batch operations, but SQL Server and Oracle do.

          Show
          svetlana.dorokhova Svetlana Dorokhova added a comment - - edited Performance test consisted of the following: 1. FULL history level 2. Process looks like this: BpmnModelInstance process = Bpmn.createExecutableProcess( "process" ) .startEvent() .serviceTask() .camundaClass(NoopDelegate.class.getName()) .camundaAsyncAfter() .serviceTask() .camundaClass(UpdateVarDelegate.class.getName()) .camundaAsyncAfter() .serviceTask() .camundaClass(DeleteVarDelegate.class.getName()) .endEvent() .done(); 3. Process is started with 500 process variables. 1st Service task does nothing, but the transaction is committed after it is completed (asyncAfter). 2nd service task update all 500 process variables with new values and the transaction is committed afterwards. 3rd service task removes all the variables and process finishes. The testing was done with the help of QA Performance test suite. It was running the test in 2 threads with 50 repeations. The result are the following: - Oracle 12 Mysql 5.7.17 SQL Server 2014 SIMPLE mode 196696 135528 264003 BATCH mode 58012 128714 94147 It looks like MySQL does not distinguish batch and not batch operations, but SQL Server and Oracle do.

            People

            • Assignee:
              yana.vasileva Yana Vasileva
              Reporter:
              svetlana.dorokhova Svetlana Dorokhova
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development