executeBatch 메소드로 수행한 DML 문의 수행 횟수

2023. 5. 6.·Oracle/Performance

FORALL 문으로 수행한 DML 문의 수행 횟수처럼 executeBatch 메소드로 수행한 DML 문의 수행 횟수도 executeBatch 메소드의 수행 횟수로 기록됩니다.

 

테스트를 위해 아래와 같이 테이블을 생성하겠습니다.

-- 1
DROP TABLE t1 PURGE;
CREATE TABLE t1 (c1 NUMBER);

 

아래 내용으로 BatchInsertTest.java 파일을 생성하겠습니다.

import java.sql.*;

public class BatchInsertTest {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@//192.168.0.10:1519/ORA19C";
        String user = "tuna";
        String password = "tuna";
        
        Connection conn = null;
        PreparedStatement pstmt = null;

        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection(url, user, password);
            conn.setAutoCommit(false);
            pstmt = conn.prepareStatement("INSERT /* TEST */ INTO T1 VALUES (?)");

            for (int i = 0; i < 100; i++) {
                pstmt.setInt(1, i + 1);
                pstmt.addBatch();
            }

            pstmt.executeBatch();
            conn.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

아래와 같이 java 파일을 컴파일한 후 실행하겠습니다.

C:\>javac BatchInsertTest.java

C:\>java -classpath .;.\ojdbc8.jar BatchInsertTest

 

V$SQL 뷰를 조회해보면 수행 횟수(executions)가 1으로 executeBatch 메소드 수행 횟수와 동일한 것을 확인할 수 있습니다. 

-- 2
SELECT sql_text, executions, buffer_gets, rows_processed
  FROM v$sql
 WHERE sql_text LIKE 'INSERT /* TEST */ INTO T1 VALUES%';

SQL_TEXT                               EXECUTIONS BUFFER_GETS ROWS_PROCESSED
-------------------------------------- ---------- ----------- --------------
INSERT /* TEST */ INTO T1 VALUES (:1 )          1          50            100

1개의 행이 선택되었습니다.
저작자표시 비영리 변경금지 (새창열림)
'Oracle/Performance' 카테고리의 다른 글
  • INSERT ALL 문에 대한 변경 정보
  • INSERT 문의 수행 방식에 따른 Redo와 Undo의 생성량
  • Hash-based Distinct Aggregation
  • Hash-based Set Operation
정희락
정희락
2007년부터 Oracle Database 성능 최적화에 주력해 왔으며, 현재 한국오라클 Engineered Systems Solution Engineering 팀에서 Solution Engineer로 근무하고 있습니다. 이 블로그는 개인적인 연구 목적으로 운영되며, Oracle 사의 공식 입장을 대변하지 않습니다.
  • 정희락
    TunA
    정희락
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • Oracle (171)
        • SQL (33)
        • PLSQL (10)
        • Performance (74)
        • Administration (37)
        • Installation (3)
        • Utilities (1)
        • JSON (8)
        • Vector (5)
      • Exadata (15)
      • SQL*Plus (2)
      • Linux (5)
      • Resources (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 도서

    • 불친절한 SQL 프로그래밍
    • 불친절한 PL/SQL 프로그래밍
  • 링크

    • Connor McDonald
    • Frits Hoogland
    • Jonathan Lewis
    • Julian Dontcheff
    • Julian Dyke
    • Kun Sun
    • Maria Colgan
    • Martin Bach
    • Mike Dietrich
    • Tanel Poder
  • 공지사항

  • 인기 글

  • 태그

    12c
    19c
    21c
    23ai
    case study
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정희락
executeBatch 메소드로 수행한 DML 문의 수행 횟수
상단으로

티스토리툴바