메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Round Trips

  • Oracle의 round-trips는 클라이언트와 데이터베이스 서버 간의 네트워크 통신 왕복 횟수를 의미합니다.


 list_altRound-trips란?
- 클라이언트가 서버에 요청을 보내고 응답을 받는 한 번의 완전한 통신 사이클
- 네트워크 지연시간과 직접적으로 연관되어 성능에 큰 영향을 미침

나쁜 예 (많은 round-trips):


-- 각 INSERT마다 1번의 round-trip 발생
INSERT INTO test VALUES (1, 'data1');
INSERT INTO test VALUES (2, 'data2');  
INSERT INTO test VALUES (3, 'data3');
-- 총 3번의 round-trips


좋은 예 (적은 round-trips):


-- 한 번의 round-trip으로 처리
INSERT ALL
  INTO test VALUES (1, 'data1')
  INTO test VALUES (2, 'data2')
  INTO test VALUES (3, 'data3')
SELECT * FROM dual;
-- 총 1번의 round-trip


Round-trips 확인 방법

SQL Trace 활용


ALTER SESSION SET SQL_TRACE = TRUE;
-- 쿼리 실행
ALTER SESSION SET SQL_TRACE = FALSE;


V$SESSTAT로 확인


SELECT s.name, ms.value
FROM v$mystat ms, v$statname s
WHERE ms.statistic# = s.statistic#
AND s.name IN ('SQL*Net roundtrips to/from client');


Batch 처리로 Round-trips 줄이기


# Python cx_Oracle 예시
cursor.executemany(
    "INSERT INTO test VALUES (:1, :2)",
    [(1, 'data1'), (2, 'data2'), (3, 'data3')]
)
# 여러 건을 한 번의 round-trip으로 처리


 list_alt성능 최적화 팁
- Bulk operations 사용 (INSERT ALL, MERGE)
- Array processing 활용
- PL/SQL 사용으로 서버 사이드 처리
- Cursor FOR LOOP 대신 BULK COLLECT 사용

  • Round-trips를 줄이는 것이 Oracle 성능 튜닝의 핵심 중 하나입니다.