Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

Oracle Exadata 스마트 스캔 기능

이 블로그는 SQL 처리가 Exadata와 어떻게 다른지에 대한 설명 및 사용 예를 포함하여 Oracle® Exadata® Smart Scanfeature에 대해 자세히 설명합니다.

소개

Oracle은 2008년에 엔지니어링 시스템 제품군의 첫 번째 제품으로 Exadata를 설계 및 도입했습니다. 사용자가 구성, 설치, 조정 및 관리하는 기존 데이터베이스 시스템과 달리 엔지니어링 시스템에는 오라클.

Exadata 머신에는 다양한 구성 요소가 있습니다. 다음 구성요소가 기본 구성요소입니다.

  • 데이터베이스 서버 :데이터베이스 소프트웨어, ASM(Automatic Storage Management) 또는 Oracle Grid Infrastructure를 실행하는 엔터프라이즈급 서버

  • 스토리지 서버 :Exadata 스토리지 서버 소프트웨어를 실행하는 스토리지 서버 또는 셀로, 데이터베이스 서버에서 들어오는 I/O 요청과 사용자에게 반환되는 데이터에 대한 요청을 관리합니다.

  • InfiniBand 네트워크 :내부 Exadata 네트워크는 주로 고성능 컴퓨팅 환경을 위해 설계된 InfiniBand를 기반으로 합니다.

Exadata는 데이터베이스의 성능을 향상시키는 Exadata Storage Software(ESS)로 알려진 소프트웨어와 함께 제공됩니다. 각 스토리지 셀에 설치된 스토리지 관리 서버인 ESS는 스토리지 서버를 관리하고 스토리지 관련 요청에 대해 데이터베이스 서버와 통신합니다.

ESS의 주요 기능

ESS의 주요 기능은 다음과 같습니다.

  • 플래시 캐시 :플래시 캐시는 최근에 액세스한 개체를 캐시하는 셀 서버의 고성능 캐시입니다.

  • 플래시 로그 :Flash 로그는 redo-log 쓰기를 위한 고성능, 짧은 대기 시간 및 안정적인 임시 저장소를 제공합니다.

  • EHCC :Exadata EHCC(Hybrid Columnar Compression)는 최고 수준의 데이터 압축을 가능하게 합니다. EHCC는 데이터를 압축 단위라고 하는 일련의 행으로 구성합니다. . 압축 단위 내에서 EHCC는 데이터를 열별로 구성한 다음 데이터를 압축합니다.

  • 저장소 색인 :스토리지 인덱스는 스토리지 서버의 디스크에서 데이터를 읽는 데 소요되는 시간을 줄이기 위해 설계된 스토리지 서버의 인메모리 구조입니다.

  • 세포 오프로딩 :기존 스토리지 설계와 달리 Exadata 스토리지 셀은 내부적으로 일부 워크로드를 처리하여 컴퓨팅 또는 데이터베이스 노드의 전체 부담을 줄이도록 설계되었습니다. 이 프로세스를 셀 오프로딩이라고 합니다.

  • 스마트 스캔 :스마트 스캔을 사용하면 대부분의 SQL 처리가 데이터베이스 계층 대신 스토리지 계층에서 발생하여 쿼리 성능이 크게 향상됩니다. 스마트 스캔은 데이터베이스 계층으로 전송되는 데이터의 양을 줄여 데이터베이스 노드의 CPU 사용량을 줄입니다.

SQL 처리

전통적으로 SQL 처리는 데이터베이스 서버에서만 발생합니다. Exadata에서는 SQL 처리가 분할되어 스토리지 계층에서도 발생합니다.

기존 SQL 처리

다음 단계는 다음 다이어그램과 같이 기존 SQL 처리로 구성됩니다.

Oracle Exadata 스마트 스캔 기능
  1. 고객이 쿼리를 제출합니다.
  2. 이 작업은 전체 테이블 스캔을 트리거합니다.
  3. 데이터베이스는 스캔 중인 테이블을 포함하는 파일 및 해당 범위에 요청을 매핑합니다.
  4. 전체 스캔과 유사하게 데이터베이스는 모든 블록을 읽기 위해 I/O 작업을 실행합니다.
  5. 테이블의 쿼리된 모든 블록이 메모리로 읽혀집니다.
  6. 프로세스는 조건자를 충족하는 행에 대해 블록을 검색합니다.
  7. 마지막으로 요청된 행이 클라이언트에 반환됩니다.

큰 테이블인 경우 해당 테이블의 모든 블록을 읽고 스토리지 네트워크를 통해 전송하고 메모리에 복사합니다. 프로세스 읽기 많은 원하지 않는 행이 요청된 SQL 작업을 완료하기 위해 메모리로 읽습니다. 대량의 전송 데이터는 대역폭을 소모하고 응답 시간에 영향을 미치며 데이터베이스 계층에 불필요한 부담을 줍니다.

Exadata 서버 SQL 처리

Exadata 스토리지를 사용하면 데이터베이스 로직이 내장된 Exadata 스토리지 소프트웨어를 사용하기 때문에 SQL 처리가 훨씬 더 효율적으로 처리됩니다. 다음 단계는 다음 다이어그램과 같이 Exadata SQL 처리로 구성됩니다.

Oracle Exadata 스마트 스캔 기능
  1. 고객이 쿼리를 제출합니다.
  2. 데이터베이스 서버는 쿼리 기준을 포함하는 지능형 데이터베이스(iDB) 메시지를 구성합니다. 이 iDB 메시지는 랙의 모든 스토리지 서버로 이동합니다.
  3. cellsrv ESS의 구성 요소는 데이터 블록을 스캔하여 요청을 충족하는 일치하는 행과 열을 식별합니다.
  4. 모든 스토리지 서버는 쿼리 기준을 병렬로 실행하고 상호 연결을 사용하여 관련 행 또는 최종 결과만 데이터베이스 서버로 보냅니다.
  5. 데이터베이스가 결과를 통합하고 행을 클라이언트에 반환합니다.

스마트 스캔 요구 사항

다음은 스마트 스캔을 사용하기 위한 요구 사항입니다.

  • 스마트 스캔은 전체 테이블 스캔 또는 전체 인덱스 스캔에만 사용할 수 있습니다.
  • 쿼리는 직접 경로 읽기를 수행해야 합니다.
  • 데이터베이스 초기화 매개변수 CELL_OFFLOAD_PROCESSING를 설정해야 합니다. TRUE로 .
  • Exadatacells에 완전히 저장된 세그먼트를 디스크 그룹에 저장해야 합니다.
  • 세그먼트 데이터를 저장하는 ASM 디스크 그룹에는 다음 속성 설정이 있어야 합니다. – compatible.rdbms =11.2.0.0.0 (또는 이후) – compatible.asm =11.2.0.0.0 (또는 이후) – cell.smart_scan_capable =TRUE

스마트 스캔의 예

통계에 대한 스마트 스캔 효과를 측정하려면 먼저 스마트 스캔을 활성화한 다음 활성화하지 않은 상태에서 다음 단계를 실행하십시오.

1단계:데이터베이스에 연결

SQL*Plus를 사용하여 데이터베이스에 연결하려면 다음 명령을 실행하십시오.

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

2단계:통계 확인

다음 쿼리를 실행하여 통계가 0 또는 0에 가까운지 확인하십시오.

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

3단계:스마트 스캔을 비활성화한 상태에서 선택 쿼리 실행

스마트 스캔을 비활성화하는 최적화 힌트를 사용하여 다음 선택 쿼리를 실행합니다.

SQL> select /*+ OPT_PARAM('cell_offload_processing' 'false') */ count(*)
from sales where time_id between '01-JUN-2017' and '30-OCT-2017'
and amount_sold = 1;

COUNT(*)
----------
134055

4단계:통계 다시 확인

다음 명령을 실행하여 통계를 다시 확인하십시오. 3단계에서 쿼리에 의해 처리된 모든 데이터(물리적 읽기 총 바이트)는 스토리지 네트워크를 통해 데이터베이스 서버로 반환됩니다(셀 물리적 IO 상호 연결 바이트).

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- -----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           759.429688
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

5단계:통계 재설정

세션 수준 통계를 재설정하려면 다음 명령을 실행하여 세션을 데이터베이스에 다시 연결하십시오.

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

6단계:통계 다시 확인

다음 쿼리를 실행하여 통계가 0 또는 0에 가까운지 확인하십시오.

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

7단계:스마트 스캔을 비활성화하지 않고 선택 쿼리 실행

스마트 스캔을 비활성화하는 최적화 힌트 없이 다음 선택 쿼리를 실행하십시오.

SQL> select count(*) from sales where time_id between '01-JUN-2017'
and '30-OCT-2017'and amount_sold = 1;

COUNT(*)
-------
134055

8단계:통계 확인

다음 쿼리를 실행하여 통계를 확인하십시오. 쿼리는 여전히 4단계에서와 같이 약 759MB의 I/O(물리적 읽기 총 바이트)를 수행합니다. 그러나 이번에는 1.7MB만 DB 서버에 반환됩니다(셀 물리적 IOinterconnect 바이트). 이것은 작동 중인 스마트 스캔의 결과입니다. 이 경우 스마트 스캔은 술어 오프로드에 적합한 셀 물리적 IO 바이트가 물리적 읽기 총 바이트와 같고 스마트 스캔에서 반환된 셀 물리적 IO 상호 연결 바이트가 셀 물리적 IO 상호 연결 바이트와 같기 때문에 이 쿼리와 연결된 I/O에 대해 작동합니다. .

SQL> select a.name, b.value/1024/1024 mb from v$sysstat a, v$mystat b where a.statistic# = b.statistic# and (a.name in ('physical read total bytes', 'physical write total bytes','cell IO uncompressed bytes') or a.name like 'cell phy%');

NAME                                                             MB
----------------------------------------------------------------	----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           1.71562805
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         759.429688
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      1.71562805
cell IO uncompressed bytes	                                    759.429688

10 rows selected.

결론

Exadata의 스마트 스캔 기능은 쿼리 성능을 향상시키기 위해 데이터베이스 계층 대신 스토리지 계층에서 SQL 처리를 수행할 수 있도록 합니다. SmartScan은 데이터베이스 계층으로 전송되는 데이터의 양을 줄여 데이터베이스 노드의 CPU 사용량을 줄입니다.

피드백 탭을 사용하여 의견을 남기거나 질문하십시오.

데이터베이스 서비스 및 Rackspace 애플리케이션 서비스에 대해 자세히 알아보십시오.