SQL*Net more data from client 이벤트와 SDU 설정

2023. 4. 5.·Oracle/Performance

SQL*Net more data from client 이벤트는 클라이언트로부터 데이터 수신을 대기할 때 발생합니다. 주로 바인드 변수 값의 크기가 큰 INSERT 문에서 발생하지만, 구문의 크기가 큰 쿼리에서도 발생할 수 있습니다.

The server is waiting on the client to send more data to its client shadow process, in an already initiated operation.

 

아래는 구문의 크기에 따라 SQL*Net more data from client 이벤트가 발생하는 횟수를 테스트한 결과입니다. 첫 번째는 8 KB 단위로 데이터를 전송하고 그 이후부터는 32 KB 단위로 데이터를 전송한다는 것을 유추할 수 있습니다.

-- 1
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|NAME                                              |     WAITS|     WAITED|   AVG_WAIT|CLASS               |
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|SQL*Net more data from client                     |     1.00 |     6.00us|     6.00us|Network             | -- 01.sql:   8 KB
|SQL*Net more data from client                     |     2.00 |     2.36ms|     1.18ms|Network             | -- 02.sql:  40 KB (+ 32 KB)
|SQL*Net more data from client                     |     3.00 |     5.90ms|     1.97ms|Network             | -- 03.sql:  71 KB (+ 31 KB)
|SQL*Net more data from client                     |     4.00 |     7.78ms|     1.95ms|Network             | -- 04.sql: 103 KB (+ 32 KB)
+--------------------------------------------------+----------+-----------+-----------+--------------------+

 

테스트를 위해 아래와 같이 DEFAULT_SDU_SIZE 파라미터와 SDU 파라미터를 64 KB로 변경하겠습니다.

-- 2-1: sqlnet.ora (server)
DEFAULT_SDU_SIZE=65535

-- 2-2: tnsnames.ora (client)
TEST=(DESCRIPTION=(SDU=65535)(ADDRESS=(PROTOCOL=TCP)(HOST=DB1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB)))

 

쿼리를 다시 수행하면 크기가 103 KB인 4번 쿼리만 SQL*Net more data from client 이벤트가 1회 발생하는 것을 확인할 수 있습니다. 아울러 크기가 71 KB인 3번 쿼리에서 SQL*Net more data from client 이벤트가 발생하지 않은 점에서 앞선 설정에 의해 첫 번째 데이터 전송 단위가 변경된 것을 유추할 수 있습니다. 참고로  SQL*Net listener tracing를 사용하면 SDU에 대한 상세한 분석이 가능합니다. 마지막으로 구문의 크기가 큰 쿼리에 대한 근본적인 해법은 SDU 크기 변경이 아니라 뷰나 PTF 등을 통해 구문의 크기를 줄이는 것입니다.

-- 3
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|NAME                                              |     WAITS|     WAITED|   AVG_WAIT|CLASS               |
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|SQL*Net more data from client                     |     1.00 |     3.99ms|     3.99ms|Network             | -- 04.sql: 103 KB
+--------------------------------------------------+----------+-----------+-----------+--------------------+

 

아래 링크에서 테스트에 사용한 쿼리를 다운로드할 수 있습니다.

01.sql
0.01MB
02.sql
0.04MB
03.sql
0.07MB
04.sql
0.10MB

저작자표시 비영리 변경금지 (새창열림)
'Oracle/Performance' 카테고리의 다른 글
  • 서브쿼리 팩토링 절과 log file sync 이벤트
  • V$SQL 뷰의 program_id, program_line# 칼럼
  • FORALL 문으로 수행한 DML 문의 수행 횟수
  • 예상 카디널리티에 따른 SORT CLUSTER BY ROWID 오퍼레이션의 동작
정희락
정희락
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
정희락
SQL*Net more data from client 이벤트와 SDU 설정
상단으로

티스토리툴바