데이터베이스 연구실.log

데이터베이스와 스토리지 협력

DB 서버의 SQL 처리와 셀의 데이터 선별을 나누고 Smart Scan, Storage Index, HCC, 플래시 캐시가 줄이는 대상을 구분함

SQL OffloadingStorage Server SoftwareSmart ScanStorage IndexHCC

#핵심 요약

일반 블록 I/O에서는 스토리지가 요청된 블록을 반환하고 DB 서버가 필요한 데이터를 선별함

Exadata는 스토리지 셀 소프트웨어가 지원되는 조건과 컬럼을 선별해 반환하는 방식으로 일부 작업을 분담함

기능마다 줄이는 대상이 저장량, 읽을 영역, 반환량, 읽기 지연으로 다름

#개념과 동작 원리

#블록 반환에서 작업 분담으로

단계 일반 스토리지의 설명 Exadata의 설명
SQL 준비 DB 서버에서 분석, 실행 DB 서버에서 SQL 해석, 실행계획 수립
데이터 읽기 요청된 블록 반환 셀에서 지원되는 스캔 처리
선별 DB 서버에서 행, 컬럼 검사 셀에서 지원되는 조건, 필요 컬럼 선별
후속 처리 DB 서버에서 결과 처리 DB 서버에서 반환 결과의 조인, 정렬, 집계 등 처리

DB 서버의 일부 작업을 셀에 넘기는 것을 Offloading이라고 함

실습에서는 초기 Teradata, Netezza의 전용 프로세서, FPGA, Exadata의 스토리지 소프트웨어를 처리 기능의 배치 위치로 비교함
제품별 성능을 비교한 결과는 기재 없음

#기능별로 줄이는 대상

기능 처리 위치와 방식 줄이는 대상
HCC 컬럼 특성을 활용한 압축, 셀의 압축 해제 처리 저장량과 스캔할 압축 데이터량
Partition Pruning DB 옵티마이저가 조건과 무관한 파티션 제외 접근할 파티션
Storage Index 셀이 관리하는 영역별 최소, 최대 등 요약 정보 읽을 필요가 없는 저장 영역
Smart Scan 셀에서 조건과 컬럼 선별 DB 서버로 반환하는 바이트
Smart Flash Cache 셀 플래시에 재사용할 데이터 캐시 느린 디스크 접근 지연

Storage Index는 DBA가 생성하는 B-tree 인덱스와 구분되며 실습에서는 셀 자동 관리 메타데이터로 설명함
Partition Pruning은 일반 Oracle DB에서도 적용하는 옵티마이저 기능임

실습 VM의 영역별 최소, 최대값 SQL은 Storage Index의 판단 원리를 재현하고, HCC 어드바이저는 압축 비율을 추정함
실제 셀에서 측정한 Storage Index 실행 결과와 HCC 저장 크기는 기재 없음

#여러 기능을 결합한 실습 예시

실습 단계 설명용 데이터량 수치가 가리키는 대상
초기 데이터 10TB 압축 전 논리적 크기
HCC 1TB 압축 후 저장 크기
Partition Pruning 100GB 관련 파티션의 후보 범위
Storage Index 20GB 읽을 영역의 예시
Smart Scan 5GB 조건, 컬럼 선별 후 반환 결과의 예시

위 수치는 가정값임
데이터량 차이를 ‘스캔 2000배’로 표현했으나 실행 시간 개선률은 아님

압축 저장 데이터와 반환 데이터는 형식이 다를 수 있어 20GB와 5GB만으로 조건에 맞는 행의 비율을 계산할 수 없음
Flash Cache 효과는 데이터량 감소율에 곱할 수 없음

셀에서 조건과 컬럼을 선별하는 흐름은 Smart Scan에서 다룸

#사용 조건과 주의사항

지원되는 연산과 접근 방식에 따라 셀에 분담할 수 있는 범위가 달라짐

물리적으로 모인 데이터는 영역별 값의 범위가 좁아 Storage Index의 제외 효과가 커질 수 있으며 분산된 데이터는 효과가 제한될 수 있음

실습은 HCC 비율 추정, 파티션 동작, 영역별 SQL 계산, DB 서버 측 필터 시뮬레이션으로 나뉨

SQL마다 처리 순서와 데이터 감소율은 달라질 수 있음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기