메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Dbstudy (토론 | 기여)님의 2025년 9월 25일 (목) 10:31 판 (새 문서: == Round Trips == * Oracle의 round-trips는 클라이언트와 데이터베이스 서버 간의 네트워크 통신 왕복 횟수를 의미합니다. ## Round-trips란? - 클라이언트가 서버에 요청을 보내고 응답을 받는 한 번의 완전한 통신 사이클 - 네트워크 지연시간과 직접적으로 연관되어 성능에 큰 영향을 미침 ===나쁜 예 (많은 round-trips):=== <source lang=sql> -- 각 INSERT마다 1번의 round-trip 발생 INSERT...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Round Trips

  • Oracle의 round-trips는 클라이언트와 데이터베이스 서버 간의 네트워크 통신 왕복 횟수를 의미합니다.
    1. Round-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으로 처리


성능 최적화 팁

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

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