cell offload processing 에 대한 이해와 검증을 위해서 아래의 시나리오을 실습합니다.
이번 실습은 난이도가 높은 실습 입니다.
· Demonstrate Smart File creation for Creating Tablespaces
· Demonstrate Smart Scan processing for Table Scans
· Demonstrate Smart Scans in Index Fast Full Scan
· Demonstrate Smart Scans in Bitmap Index Scan
· Demonstrate Exadata Cell failure
· Shutdown the Lab Environment
Tablespaces 생성을 통해 Smart File creation 검증
Exadata 의 주요 특장점인 Smart File creation은 file 생성을 cell offloading 을 통해 성능을 극대화 합니다. 아래의 실습을 통해서 그 내용을 이해하고 검증해 보도록 하겠습니다.아래의 실습은 lab_user DB 사용자 계정으로 진행 합니다.
효율적인 Table Scans 위한 Smart Scan Processing 검증
v$sql 뷰테이블을 통해서 아래의 통계 정보을 확인 합니다.
- IO_INTERCONNECT_BYTES: query 을 위해 통신한 IO 값에 대한 지표 입니다. 이 값을 통해서 block IO 와 smart IO 에 대한 통계을 알 수 있습니다 .
- IO_DISK_BYTES: query을 위해 cell 의 IO 성능에 대한 지표 입니다. 이 값을 통해서 cell IO 성능에 대한 block IO 와 smart IO 에 대한 통계을 알 수 있습니다 .
- IO_CELL_OFFLOAD_ELIGIBLE_BYTES: query을 위해 cell의 smart scan 을 위해 offload 된 IO 값에 대한 지표 입니다. Cell Offload Processiong 에 대한 통계을 알 수 있는 아주 중요한 지표 입니다.
$sysstat 뷰테이블을 통해서 아래의 통계 정보을 확인 합니다.
- cell physical IO interconnect bytes: 인스턴스 서비스 이후부터 모든 Cell 로부터 서비스된 IO의 통계 지표을 나타냅니다. 이 이 값을 통해서 block IO 와 smart IO 에 대한 통계을 알 수 있습니다 .
- physical IO disk bytes: 인스턴스 서비스 이후 cell 의 IO 성능에 대한 지표 입니다. 이 값을 통해서 cell IO 성능에 대한 block IO 와 smart IO 에 대한 통계을 알 수 있습니다 .
- cell physical IO bytes eligible for predicate offload: 인스턴스 서비스 이후 위해 cell의 smart scan 을 위해 offload 된 IO 값에 대한 지표 입니다. Cell Offload Processiong 에 대한 통계을 알 수 있는 아주 중요한 지표 입니다.
lab_user 로 접속해서 아래의 단계을 순차적으로 수행 합니다.
1. | 이번 단계에서는 몇가지 Query 을 수행함을 통해서 lab_table 에 block I/O 을 생성 시킵니다. I/O 을 발생하는 Query의 조건을 간제적으로 정의하기 위해서 아래의 파라미터 값을 변경 합니다. 파라미터 offload_processing 값을 FALSE 로 변경합니다. offload processing 을 사용하지 못하도록 변경했기 때문에 Exadata cell 에서 predicate filtering 이 수행되지 못하게 됩니다.
count(*) query 을 수행해서 Exadata cell 의 I/O 사용 통계에 대한 값을 확인 합니다. 통계 정보의 값을 확인하기 위해서 v$sql_text 뷰테이블을 조회 합니다.
io_cell_offload_eligible_bytes 값이 0 인 것을 확인 함으로써, 위 SQL을 통해서 block IO가 Exadata Cell 에서 predicate filtering 없이 수행 되어졌다는 것을 이해 할 수 있습니다. |
|
2. | 이번 단계에서는 몇가지 Query 을 수행함으로 lab_table 에서 predicate I/Os ( 또는 Smart I/Os) 가 발생하도록 확인 하겠습니다. 이을 위해서 파라미터 cell_offload_processing 값을 TRUE 로 조정해서 진행 합니다. 이 파라미터 값이 TRUE 하 할지라도, 모든 Query 가 predicate I/Os ( 또는 Smart I/Os) 을 하게 되는 것은 아닙니다.
그렇기 때문에 직접 Exadata Cell 을 읽어서 강제적으로 무조건 predicate I/Os ( 또는 Smart I/Os) 을 수행하도록 몇가지 파라미터을 추가적으로 변경 해야합니다. 즉 병렬 Query가 수행되지 않아서 직접 Exadata Cell 을 읽지 않을때에도 강제적으로 Exadata Cell 을 읽도록 하는 것입니다. 이를 위해서 파라미터 “_serial_direct_read” 값을 TRUE 로 변경 합니다.위 조건에서는 병렬 Query 가 수행되지 않을 때에도 buffer cache 을 거지치 않고 Exadata Cell 에서 직접 데이터을 읽어 오게 됩니다. 아래 SQL 의 실행계획을 통해서 위의 예상 결과을 확인 할 수 있습니다. 특히 Predicate clause 부분은 Exadata Cell Offload Processing 에 대한 실행계획 입니다.
|
Index Fast Full Scan 을 통한 Smart Scans 검증
lab_user로 접속해서 아래의 단계을 수행 합니다.
1. | 우선 lab_table 에 lab_table_index 을 생성합니다.
|
|
2. | lab_table 에 Index Fast Full Scan 을 할 수 있도록 Hint 을 주어서 아래의 SQL을 수행 합니다. cell offload processing 이 수행되도록 하기 위해서 아래와 같이 2개 파라미터의 값을 조정 합니다. 실행 계획을 확인하면 storage 와 filter clause 부분에서 Index Fast Full Scan 이 Cell Offload Processing 을 수행 한 것을 확인 할 수 있습니다.
|
Bitmap Index Scan 을 통한 Smart Scans 검증
lab_user 로 접속해서 아래의 단계을 수행 합니다.
1. | lab_table에 bitmap index lab_table_bitmap 을 생성 합니다.
|
|
2. | lab_table 에 Index Fast Full Scan 을 할 수 있도록 Hint 을 주어서 아래의 SQL을 수행 합니다. cell offload processing 이 수행되도록 하기 위해서 아래와 같이 2개 파라미터의 값을 조정 합니다. 실행 계획을 확인하면 storage 와 filter clause 부분에서 lab_table_bitmap 이 Cell Offload Processing 을 수행 한 것을 확인 할 수 있습니다.
|
Exadata Cell Failure 에 대한 검증
아래의 검증을 위한 실습은 2개의 Exadata Cell 환경일 경우에만 가능합니다.
(Exadata Cell1, Exadata Cell2)
1. | lab_user 로 sqlplus 에 접속해 아래의 SQL 을 수행 합니다. 아래의 SQL 이 연속적으로 수행 되고 있을때 2번째 단계을 동시에 실행 합니다.
|
|
2. | PuTTY(SSH) 을 통해 root 계정Exadata Cell 에 접속해서 init0 명령어로 시스템을 강제적으로 shutdown 시킵니다.
|
|
3. | 1번째의 sqlplus session 을 통한 SQL 수행이 연속적으로 수행되고 있음을 확인 할 수 있습니다. 이것은 ASM 이 Normal Redundancy 의 속성으로 DISK GROUP 을 생성하였기 때문에 Exadata Cell1 이 Failure 시에도 Exadata Cell1의 ASM Failure Group 을 통해서 연속적으로 서비스 되고 있음을 보여줍니다.
|
Lab 실습 환경 Shutdown
아래 단계별 수행을 통해서 Lab 실습 환경을 shutdown 시킵니다.
1. | Database server VM (Server1) 에 oracle 계정으로 로그인해서 아래의 명령을 수행합니다.
|
|
2. | Database server VM (Server1) 에 root 계정으로 로그인해서 아래의 명령을 수행합니다.
|
|
3. | On the Exadata Cell1 VM (ExadataCell1) 에 root 계정으로 로그인해서 아래의 명령을 수행합니다
|
|
4. | On the Exadata Cell2 VM (ExadataCell2) 에 root 계정으로 로그인해서 아래의 명령을 수행합니다
|
Not like DOTA, Cell Legend’s version for Roshan — the Lord — does not
supply an merchandise that cheats demise once.