DB/Oracle

[SQL 튜닝] 1. 튜닝 실습 준비를 위한 사전 준비

Eugenius 2023. 5. 19. 13:23

튜닝 실습을 위해 준비해야할 것

 

 1. 데이터 저장소(테이블 스페이스)와 해당 저장소를 사용할 계정

 2. SQL문만으로 대용량 테이블 구성하기

 3. 오라클의 통계 정보 분석 하기

 

 

1. 테이블 스페이스 및 계정 생성

 

   ※ 테이블 스페이스란?

 테이블, 인덱스, 프로시저, 뷰 등의 객체를 저장해놓은 오라클의 논리적인 공간이다. Oracle에서 실제 데이터들을 Data file 형식의 물리적인 공간에 저장하고, 이러한 Data file이 하나 이상 모여서, 테이블 스페이스라는 논리적인 저장 공간을 형성한다. 

  테이블 스페이스는 데이터베이스에서 가장 큰 단위의 논리적 저장 공간의 구성단위이며, 업무의 단위나 사용용도에 따라서 여러개의 테이블 스페이스로 나누기도 한다.

 

 

(1) 테이블 스페이스 생성

테이블 스페이스 생성 쿼리

 

(2) 사용자 계정 생성 및 권한 부여

   DBMS_PRAC_DATA 테이블 스페이스를 Default로 하는 계정을 신규로 생성

유저 생성 쿼리
권한 부여 쿼리

 

2. 테이블 구성

 

(1)  NOLOGGING 모드 설정

 NOLOGGING 모드를 설정하면 해당 테이블에 INSERT 작업시 Redo 로그 작업을 최소화 하여 대용량 데이터 입력 시간을 줄일 수 있다.

(2) APPEND 힌트

 Oracle이 테이블에 데이터를 입력할 때 다음 단계를 거치게 된다.

  1) 데이터 버퍼 캐시를 경유한다.

  2) 테이블 세그먼트의 비어 있는 블록을 검색한다.

  3) 비어 있는 블록에 데이터를 저장한다.

APPEND 힌트를 사용한다면 세그먼트의 HWM(세그먼트의 가장 끝) 바로 뒤부터 데이터를 입력하게 된다. 또한, 데이터 버퍼 캐시를 경유하지 않고 바로 데이터를 저장하게 되므로 데이터의 입력 시간을 단축할 수 있다. 

 

(3) 데이터 복제

-  카티션 곱 조인(Cartesian Product Join) 

    N건의 데이터로 구성된 'A'라는 테이블과 M건의 데이터를 가진 'B'라는 테이블을 아무런 조인 조건 없이 조인하면 'N건 X M건'의 데이터를 출력하게 된다.

  A가 100건 B가 1,000건의 데이터가 있다고 가정하면, 총 10만 건의 결과 건수가 나오게 된다.

-  계층형 쿼리 사용

   Oracle에서 사용하는 계층형 쿼리를 이용하여 인위적으로 여러 개(N)의 행을 출력할 수 있다. 

- RANDOM 함수의 사용

 테이블 구성 시 특정 값을 인위적으로 만들기 위해서 RANDOM 함수를 이용한다.

 

랜덤 숫자

 1~100까지의 숫자 중 특정 숫자를 리턴한다. 기본적으로 실수를 리턴하기 때문에 TRUNC 함수로 덮어씌어 정수를 리턴하게 한다. 

랜덤 문자열

 랜덤 문자열을 발생시키는 예제, 문자로 된 10자리의 랜덤 문자열을 리턴한다. 

대문자 10개 반환
소문자 10개 반환