Print
카테고리: [ Oracle Database ]
조회수: 19134

1. 개요

지난 번에 Exa의 간단한 역사와 소개에 대한 내용을 정리한 바 있다. 이번에는 DB 서버와 스토리지 서버 사이의 I/O 개선을 위한 좀 더 디테일한 내용을 정리해보고자 한다.


2. Infiniband

Infiniband는 DB 서버와 스토리지 서버 사이에 존재한다. 대역폭이 약 초당 40Gb 정도 되는데 기존 대비 훨씬 큰 처리량이다. DB 서버와 스토리지 서버 사이에도 Infiniband로 연결하는 스위치가 존재하지만 하나 이상의 Rack으로 구성 시 Rack끼리 연결 시에도 Infiniband로 연결하는 스위치가 존재한다.

사실 Infiniband는 오라클에 의한 새로운 개념이 아니다. 컴팩/IBM/HP의 Future I/O, 인텔/MS/Sun의 Next Generation I/O 이 두 기술이 1999년 합쳐져서 만들어졌다. Exa 이외에도 많은 클라우드 컴퓨터와 수퍼 컴퓨터들이 Infiniband를 사용하고 있다.

이더넷과는 다소 차이가 있다. 계층적 스위치 방식이 아니고 스위치 패브릭 방식의 아키텍처이다. 모든 전송은 채널 어댑터에서 시작하거나 끝난다. 각 프로세서는 HCA(호스트 채널 어댑터)를 가지고 있고, 각 주변 장치는 TCA(타켓 채널 어댑터)를 가지고 있다.

Infiniband와 경쟁하는 것은 기가 비트 이너넷이다. 다소 예전 자료이긴 하지만 2012년 기준으로 세계 500 수퍼 컴퓨터(Top 500)에서 Infiniband는 226개, 기가 비트 이더넷은 188개 사용되었다.


3. Flash Disk 

과거에는 디스크가 느려서 Random I/O의 병목이 발생했다. Exa는 스토리지 서버 내에 Flash Cache라는 Flash Disk 기반 캐시가 존재한다. 속도가 향상됐다.

테이블과 인덱스가 Flash Cache에 저장되어 있다면 Disk I/O 없이 Cache 내 값을 사용한다. X3 부터는 Write-back 옵션이 추가되었는데 이는 DML을 Cache 할 수 있는 것이다.


4. MPP(Massively Parallel Processing)

장점 : 스토리지의 병목 현상 해결, Shared Nothing 형태로 관리할 수 있어 H/W의 Scale-out를 구현할 수 있다.


5. Offloading

예전 시대에 서버는 DB 서버 + 스토리지 서버를 의미했다. 스토리지는 단지 데이터의 저장 역할을 담당할 뿐이었다. 그리고 DB의 성능은 I/O에 좌우되었다.

현재는? Exa의 스토리지(서버)는 자신의 CPU와 메모리를 가지고 SQL 처리를 수행할 수 있게 되었다.

Offloading은 기존 DB에서 처리한 것을 스토리지 레이어로 offload하여 처리한다는 개념이다. 말이 좀 어려운데 다시 말하자면 DB 서버와 스토리지 서버 간 방대한 데이터를 이동하는데 소모되는 비용을 줄이는데 목표가 있다.

이 offloading 기법을 통해 최소한의 결과만 DB 서버로 넘어간다. 따라서 전송량이 줄어든다.

이를 구현하기 위한 기능들은 Smart Scan, Simple Join 등을 포함하여 여러가지가 있다.


6. Smart Scan

그러면 Smart Scan에 대해서 좀 더 알아보자.

alter session set cell_offload_processing=true;

Smart Scan은 위에서 말한 Predicate filtering, Column projection, 그리고 Storage index에 의해 구현된다고 할 수 있다.

1. Predicate filtering

2. Column projection 

 3. Storage index