들어가며
표준 Oracle Architecture에서는 대용량의 데이터를 처리할 때 좁은 네트워크 대역 때문에 DB 서버와 Storage 사이에 I/O 병목이 발생하게 된다. 뿐만 아니라 하나의 로우만 Access 하는데도 로우를 포함한 블록 전체를 DB 서버로 전송해야만 한다. Oracle은 이러한 I/O 병목을 해결하기 위해 Exadata라는 새로운 Appliance 제품을 출시하였다. 본 장에서는 Exadata Architecture와 Exadata의 기능들에 대해 알아보도록 한다.
Exadata Architecture
Exadata는 다음의 기술들을 도입하여 DB 서버와 Storage 사이의 I/O 병목 현상을 해결하였다
1. Infiniband network
DB 서버와 Storage 서버 사이에 Infiniband network를 두어 기존 보다 더 큰 파이프를 통해 많은 양의 데이터를 전송하도록 한다. Infiniband는 40Gb/Sec의 bandwidth를 가지며 기존 대비 5배 이상 처리량을 제공한다.
2. Storage에 MPP(Massively Parallel Processing) 개념을 도입
이 방식은 Storage를 Parallel Storage Grid(여러 개의 Cell Server)로 구성하여 각 Cell Server에 데이터를 분할하여 저장하고 처리하는 방식이다. 이렇게 구성하면 Storage 내에서 발생했던 병목 현상을 해결할 뿐만 아니라 Shared Nothing 형태로 Storage를 관리할 수 있어 진정한 H/W의 Scale-out을 구성할 수 있다. 따라서, 시스템을 확장 시에 용량과 성능을 동시에 향상 시킬 수 있다. 참고적으로 SMP 시스템의 경우 모든 CPU가 동일한 메모리, 디스크 및 I/O 시스템을 공유하지만, MPP 시스템은 노드마다 다른 CPU, 디스크 및 I/O 시스템을 사용한다.
3. Flash Cache
Disk의 느린 속도 때문에 발생했던 Random I/O의 병목을 Storage 서버 내에 Flash Cache라는 Disk Cache를 두어 해결한다.
4. Offloading
Offloading이란 기존 DB 서버에서 수행한 처리를 Storage 계층으로 “Offload”하여 처리한다는 개념이다. 기존의 Storage 시스템은 단지 데이터를 저장하는 용도로 사용되었지만 Exadata의 Storage 서버는 질의 처리를 수행할 수 있도록 CPU와 Memory를 가지고 있는 Intelligence한 서버로 아키텍처가 변경되었다. 대표적인 예가, Where 절에 만족하는 로우를 필터링(Predicate Filtering)하고, 필요한 컬럼만 추출(Column Projection)하는 것이다.
Offloading을 통해 최소한의 결과 데이터만 DB 서버로 전송하게 되므로 기존에 Storage에서 DB 블록 전체를 전송하는 것보다 전송량이 훨씬 줄어들게 된다.
Exadata 주요기능
Exadata는 표준 Oracle Architecture가 가지고 있는 한계점을 극복하기 위해 Storage 서버에 다음의 기능들을 추가하였다.
1. Smart Scan
Smart Scan은 Storage 서버에서 DB 서버로 전송하는 데이터 양을 최소화하기 위해 필요한 블록만 엑세스하고, 조건을 만족하는 로우 중 필요한 컬럼만 선별하여 DB 서버로 전송하는 처리 방식을 말한다.
2. Storage Index
Storage Index는 Smart Scan을 지원하는 용도로 사용된다. 테이블을 Storage Region 으로 나누고, 각 Region 별로 컬럼의 최대/최소 값을 저장한다. Where 절 조건을 판단하여 컬럼이 Storage Unit의 최소, 최대 범위에 속하지 않는다면 해당 블록은 엑세스하지 않는다.
3. Flash Cache
Random I/O 성능 향상을 위해 Storage 서버에 내장된 Disk Cache이다. Random I/O 시 Disk에서 블록을
탐색하기 전에 Flash Cache에 해당 블록이 존재한다면 Flash Cache에서 해당 블록을 탐색한다.
4. HCC(Hybrid Columnar Compression)
스토리지 비용 절감과 Disk I/O를 줄이기 위해 Compression Unit 내에서 컬럼 별로 데이터를 재구성하여 정렬한 후 압축하는 기법으로 약 10x 정도로 데이터를 압축할 수 있다.
Smart Scan 질의처리
Exadata의 대표적인 기능인 Smart Scan이 어떻게 수행되는지 알아본다.
1. DB 서버는 Cell 서버로 I/O를 요청한다.
2. Cell 서버의 Storage Index를 사용 가능하면 불필요한 블록을 Skip하고 필요한 블록들만 필터링하여 엑세스한다.
3. 엑세스한 블록에서 Where 절에 만족하는 행만 필터링한다.
4. 조건을 만족한 행에서 Select 절이나 Join 조건에 해당하는 컬럼만 추출한다.
5. 최종적으로 필요한 최소한의 데이터들만 DB 서버로 전송한다. (아래 그림 참고)
'비투엔 기술기고' 카테고리의 다른 글
[김정삼의 SQL튜닝] 대량목록조회성능이슈 (0) | 2014.08.07 |
---|---|
[IT Insight] IT 후배들에게 DB 장인으로서 전하고픈 이야기 - 조광원 대표 (0) | 2014.08.05 |
[조시형의 DB이야기] SQL 내비게이션 - 옵티마이저 1 (0) | 2014.08.05 |
[IT Insight] Data Quality 패러다임 변화 및 적용사례 - 이해곤 위원 (0) | 2014.08.05 |
[IT Insight] 스마트한 데이터 경영을 위하여 - 조광원 대표이사 (0) | 2014.08.05 |