Code/Oracle

    [Oracle] Oracle Exadata의 압축방식 (Exadata Hybrid columnar Compression, EHCC)

    오늘은 Oracle Exadata의 압축방식과 데이터를 활용하는 방법에 대해서 알아보려고 한다. 1. Oracle 압축방식 Oracle은 데이터 압축을 통해서 저장 공간을 절약할 뿐만이 아니라 I/O의 비용을 최소화할 수 있다. 기존 오라클 압축에서는 BASIC 압축, OLTP 압축 방식이 있었는데 Exadata에서는 Exadata Hybrid Columnar Compression(EHCC, 또는 HCC)라고 하는 새로운 압축 기법을 제공하고 있다. Basic 압축과 OLTP 압축은 데이터를 블록 레벨로 압축하는 방식이다. 반면에 EHCC는 Compression Unit이라는 논리적인 압축 단위로 압축을 한다. 2. EHCC란 무엇인가? 기본적으로 테이블에는 여러개의 튜플(로우)와 여러개의 어트리뷰트(컬..

    [Oracle] Oracle Exadata란 무엇인가

    현재 프로젝트를 수행하고 있는 업체에서 DB 를 Exadata를 사용하고 있다고 한다. 처음에 Oracle Exadata를 사용한다기에 Oracle 과 어떤 차이가 있는지 잘 몰랐는데 알고 보니 곳곳에서 차이점이 꽤 있는 듯 하다. 잘 아는 것은 아니지만, 찾아보고 검색한 대로 내용을 정리해 보려고 한다. 1. Exa데이터는 무엇인가? 우선 데이터의 단위에 대해서 알면 Exadata에 대한 접근이 쉬울 듯 하다. Exa는 기가 - 테라 - 페타 다음의 데이터 기억 용량의 단위이다. 한마디로 매우 큰 데이터의 용량 단위라고 생각하면 된다. 시대가 발전하면서 데이터가 저장할 수 있는 크기가 점점 커졌지만, 그에 따라 데이터를 처리하는 시간 또한 늘어나고 데이터를 처리하는 것에 대해 오류가 발생할 확률 또한 ..

    [Oracle] 오라클 append와 append_values 힌트, 사용방법

    현 프로젝트에서 대량의 데이터를 적재하기 위해 오라클에서 INSERT 문을 사용하여 데이터를 적재하고 있었다. 조금 오래걸리지만 데이터 용량이 커서 그러겠거니 하면서 평화롭게 적재를 하고 있던 도중, IT 현업이 내려와서 대용량 데이터를 압축도 안시키고 그냥 적재하고 있냐며 한바탕 쿠사리를 주길래... 당황 겸 혼나면서 찾아본 append 힌트 구문... 정확이 append 구문을 언제 사용하며, 사용하는 방법에 대해 적어보려 한다. 1. append 힌트를 사용하는 이유가 무엇인가? 이것저것 찾아보니 다른 곳에서도 통상적으로 대량의 데이터를 INSERT 시킬 때에 많이 사용하는 문구가 APPEND 힌트라고 한다. APPEND 힌트를 사용하면, 중간에 버퍼 캐시를 경유하지 않고 바로 데이터 블록을 쓸 수..

    [Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기

    오라클의 힌트를 사용하는 것과 힌트를 사용하지 않는 것은 생각보다 꽤 큰 차이가 있다. 실제로 병렬처리 힌트 구문을 사용하고 차이를 확실히 느끼다 보니, 힌트구문을 더 알아보고 싶다는 생각을 하게 됐다. 그래서 오늘은 힌트절에 대한 개념과 사용 방법에 대해 알아보고자 한다. 1. 오라클 힌트(Oracle hint)란? 힌트는 SQL 튜닝을 하는데에 중요한 핵심 지시구문이다. 오라클은 자체적으로 최적의 실행 방법으로 작동시키는 옵티마이저(Optimizer)가 있는데, 간혹 옵티마이저가 실행하는 것보다, SQL 사용자가 직접 힌트 구문을 줌으로써 최적의 실행 구문을 선언하는 것이 더 나을 때가 있다. 사용자가 특정 SQL 문장에서 어떤 인덱스의 선택도가 높은지 알고 있다면, Optimizer에 의존한 실행 ..

    [Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기

    최근 오라클9i R2부터는 WITH절을 사용하여 가상테이블을 사용할 수 있도록 했다. 일전에는 임시테이블을 별도로 생성해서 만들거나, SELECT 문의 FROM 절에 반복되는 서브쿼리들을 생성하여 테이블을 불러오곤 했는데, 이제는 덕분에 가독성이 높아지게 된 것이다. 오늘은 가상테이블, 임시테이블을 생성하는 WITH절에 대해서 적어보려 한다. 1. WITH절이란? 오라클 내 WTIH절은 SQL 문장에서 오라클 공유메모리에 임시로 테이블을 생성하여 반복재사용이 가능하도록 하는 구문이다. 동일 테이블 접근을 최소화하고 메모리에 생성된 임시테이블에서 필요한 데이터를 메모리로 접근하기 때문에 성능이 향상될 수 있다. 2. WITH절의 사용방법 WITH절의 사용방법은 간단하다. WITH (TABLE 명) AS (..

    [Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기

    SQL 쿼리를 작성하다 보면 작은 데이터 간단한 데이터 탐색에서는 크게 무리가 되지 않지만, 많은 관계형 디비 안에서 여러개의 데이터 테이블을 조인하고 그룹화하다보면 시간이 매우 오래걸릴 때가 있다. 그 이유는 해당 쿼리를 수행하는데 순차적으로 진행되기 때문이다. 이를 위해 오라클에서는 병렬 힌트를 부여해서 쿼리 수행 시 멀티로 데이터를 가져와 빠르게 응답을 받을 수 있다. 병렬 힌트의 장점은, 어플리케이션 쪽에서 소스를 수정하지 않아도 된다는 점이며, 주석 안에서 힌트를 주는 것이기 때문에 오타가 나도 쿼리가 수행되긴 한다. 그럼, 병렬 쿼리를 사용하는 방법에 대해 알아보도록 하자. 1. 병렬 쿼리 사용 방법 먼저 병렬 처리가 가능할 수 있도록 세션에 권한을 부여한다. SQL> ALTER SESSION..