오라클 "엑사데이터"에 대해 얘기할 때 가장 많이 듣는 것이 스마트스캔(Smart Scan) 이라는 기술입니다.
이 기술이 엄청난 성능 향상을 가져온다고 알려져 있죠~
엑사데이터 머신(Exadata Machine)은 어플라이언스 머신, 일체형 장비라고 불립니다.
랙(Rack) 안에 여러대의 서버와 스토리지, 네트웍 장비들이 함께 구성되어 유기적으로 돌아가는 형태이고, 이게 사용자가 여러업체의 장비들을 사다가 구축하는 형태가 아니라, Oracle 사에서 이미 정해진 규격화된 제품들로 랙을 채워서 한꺼번에 공급하는 형태입니다.
어쨌든 랙안에 DB서버와 스토리지가 들어있는데, 이 스토리지가 CPU, Memory 가 탑재된 연산이 가능한 스토리지 장비 입니다.
이 연산이 가능한 스토리지 장비가 SQL의 일부연산을 미리 하는 것을 스마트스캔 이라고 합니다.
스토리지에서 단순히 Disk I/O 만 하는게 아니라 SQL의 Where 조건절(필터링)을 DB서버대신 일부 수행해 줍니다.
예를 들어, 3GB 크기의 테이블을 DB서버로 읽어와서 SQL을 수행해야 하는 경우에,
Exadata의 스토리지서버는 3GB 를 모두 읽어서 DB서버로 보내지 않습니다.
스토리지서버가 Where 조건절의 일부를 전처리하고, 이 처리결과값만 DB서버로 보냅니다. 그러면, DB서버는 이 데이터만 가지고 나머지 SQL을 마저 처리하는 방식입니다.
원래는 3GB 데이터를 DB서버의 메모리로 로딩해야 하는데, 이런 기술로 10MB 만 DB서버로 보낸다고 생각해 보면,
이게 얼마나 성능을 개선할지는 대충 감이 오게됩니다. ^^
그런데, 이 Smart Scan 을 사용하기 위해서는 몇가지 충족되어야 하는 조건이 있습니다. 모든 SQL들이 다 Smart Scan 을 하는 것은 아닙니다.
그럼, 내 SQL 이 Smart Scan 을 하는지 않하는지 확인하는 방법은?
Wait Event 를 확인하는 방법도 있습니다만, SQL 실행계획과 함께 가장 쉽게 확인해 볼수 있는 방법이 Realtime SQL Monitor 라는 것을 이용하는 것입니다.
아래와 같이 확인이 가능합니다.
1) 스마트 스캔을 하는 경우
2) 스마트 스캔을 안하는 경우
위의 2개의 결과는 Oracle Realtime SQL Monitor 기능을 이용해서 스마트스캔을 하는 경우, 안하는 경우의 Plan 을 떠 본 것입니다.
1) 번에서 보면, 원래는 3GB 를 읽어야 하는데, Offload(스마트스캔) 해서 10MB 만 읽었다는 내용을 확인할 수 있습니다.
2) 번의 경우에는 Exadata 장비가 아닌 일반 장비라 스마트스캔을 할 수가 없습니다. 그래서 Offload 관련된 항목이 나오지 않는 것을 확인할 수 있습니다.
Realtime SQL Monitor 사용방법은 여길 참고하세요 => 오라클 Plan, Trace 쉽게 보는 - Realtime SQL Monitoring
'IT관련' 카테고리의 다른 글
오라클 해시파티션(Hash Partition)에서 Split 가능한가? (0) | 2019.09.05 |
---|---|
오라클 Hash 파티션에서 Add / Drop / Truncate / Rename / Split / Merge (0) | 2019.09.05 |
오라클 통계정보 생성 방법 (analyze, dbms_utility, dbms_stats) (1) | 2019.08.10 |
오라클 통계정보의 중요성 (Importance of Oracle Statistics) (0) | 2019.08.10 |
오라클 에러 정보 (ORA-01543, ORA-1543) - Create 하려고하는 테이블스페이스가 이미 존재하는 경우 (0) | 2019.08.09 |