데이터 대역폭과 I/O 병목
스토리지 읽기, 서버 전송, DB 연산의 병목과 연결 수, 대역폭, 이동 데이터량, 디스크 접근의 개선 방법
#핵심 요약
CPU와 스토리지의 처리 능력이 충분해도 연결 구간이 포화되면 데이터 도착을 기다리는 I/O 대기가 늘어날 수 있음
실습의 대응 방향은 동시 전송 확대, 연결 대역폭 확대, 이동 데이터량 감소, 느린 디스크 접근 감소임
고속 인터커넥트와 RDMA는 전송 경로를 개선하고 Smart Scan은 셀에서 선별해 전송할 데이터량을 줄임
#개념과 동작 원리
#이동 데이터량과 대기
일반 스토리지가 블록을 반환하고 DB 서버에서 필요한 행을 선별하면 결과에 쓰지 않을 데이터도 전송에 포함될 수 있음
실습에서는 10,000개를 보낸 뒤 100개를 고르는 상황과 저장 위치에서 100개를 골라 보내는 상황을 설명용으로 비교함
| 구간 | 병목 원인 | 관련 대응 |
|---|---|---|
| 저장장치 읽기 | 느린 디스크에서 데이터가 도착하기를 기다림 | 플래시 캐시, 불필요한 영역 읽기 제외 |
| 스토리지와 DB 서버 사이 | 제한된 대역폭과 불필요한 데이터 전송 | 고속망, 여러 셀의 동시 전송, Smart Scan |
| DB 서버 처리 | 불필요하게 가져온 데이터의 필터링 비용 | 지원되는 처리를 셀에 분담 |
CPU, 메모리 증설과 공유 스토리지의 공급 능력은 서로 다른 제약임
병목을 찾으려면 노드별 같은 풀 스캔의 시간과 읽기량을 함께 비교함
#네 가지 개선 방향
| 실습 방향 | 적용 기술, 처리 | 변화시키는 대상 |
|---|---|---|
| More Lines / More Pipes | 여러 스토리지 셀의 병렬 읽기와 동시 전송 | 동시 처리량 |
| Larger Lines / Bigger Pipes | InfiniBand 또는 RoCE 인터커넥트 | 연결 대역폭과 지연 |
| Less Data Movement | Smart Scan의 조건, 컬럼 선별 | DB 서버에 보내는 데이터량 |
| Less Disk I/O | Storage Index의 읽기 제외와 플래시 활용 | 불필요한 읽기 또는 디스크 접근 지연 |
대역폭을 늘린 뒤에도 데이터 증가로 다시 포화될 수 있어 전송량 감소와 함께 설명함
실습의 40Gbps, 100Gbps는 세대별 예시이며 모든 Exadata의 고정 사양으로 적용하지 않음
#RDMA의 역할
RDMA는 Remote Direct Memory Access이며 네트워크 장치를 이용해 원격 메모리에 접근하는 방식임
지원되는 전송 경로에서 CPU와 OS의 복사, 인터럽트, 문맥 전환 부담을 줄임
Smart Scan은 셀에서 데이터를 선별해 전송량을 줄임
실습의 ‘CPU 부하 0’, ‘순간 이동’, ‘네트워크를 거치지 않음’은 실제 사용량이나 전송 경로를 검증한 값이 아님
실습 종합 설명은 RDMA가 네트워크를 이용하며 데이터 압축과도 다른 기술임을 명시함
#필수 명령어 또는 SQL
select *
from (select inst_id, event, total_waits,
round(time_waited_micro/1e6,1) as sec
from gv$system_event
where wait_class = 'User I/O'
order by time_waited_micro desc)
where rownum <= 5;결과 해석: 실습에서는 RAC 인스턴스를 INST_ID로 구분하고 풀 스캔을 수행한 노드의 direct path read가 상위에 있는지 확인하도록 함
이 SQL은 모든 인스턴스의 행을 정렬해 상위 5개를 고르며 인스턴스별 5개를 각각 구하는 쿼리는 아님
실습의 분석 범위에는 AWR의 DB CPU와 User I/O 대기 비중 비교도 포함되지만 실제 보고서 수치는 기재 없음
#사용 조건과 주의사항
VM에는 셀이 없어 direct path read만 관찰했으며 실제 cell smart table scan 실행 결과는 기재 없음
실습 VM의 simulated eligible, returned는 DB 서버가 전체 블록을 읽은 뒤 필터링한 통계이며 실제 네트워크 전송 절감이나 속도 개선의 실측값이 아님
실습의 10TB에서 5GB로 줄어드는 예시는 기능별 데이터량을 구분하기 위한 가정값이며 SQL 실행 시간 2000배 개선의 증거로 사용하지 않음
무어의 법칙에 관한 실습 종합 설명은 트랜지스터 증가 추세와 DB 처리 성능의 고정 배수 증가를 구분함