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 성능 튜닝의 핵심 중 하나입니다.