전체 글

Database

Oracle IOT

IOT 테이블 전체가 인덱스 구조로 이루어진 테이블을 IOT(Index-Organized Table)이라고 부르며 테이블을 찾아가기 위한 rowid를 갖는 일반 인덱스와는 달리 모든 데이터를 리프 블록에 저장하고 있다. (인덱스 리프 블록 == 데이터 블록) IOT 구조로 테이블을 구성하기 위해선 테이블 시작 시 설정하여야하는데, 그 방법은 아래와 같다. create table index_org t (a number primary key, b varchar(10)) organization index; //IOT 생성 특징 같은 값을 가진 레코드들이 100% 정렬된 상태로 모여있기 때문에 Rnadom 액세스가 아닌, Sequential 방식으로 데이터를 액세스할 수 있다. → 넓은 범위를 액세스할 때 유리..

Database

인덱스 ROWID

제한 ROWID 포맷 오라클 초기 버전부터 사용하던 ‘제한 ROWID 포맷’은 ROWID가 데이터파일 번호 + 블록 번호 + 블록 내 로우번호로 구성된다. 확장 ROWID 포맷 오라클 8 버전부터 사용하기 시작한 ‘확장 ROWID 포맷’은 ROWID가 오브젝트 번호 + 데이터파일 번호 + 블록 번호 + 블록 내 로우번호로 구성된다. 둘 중 어느 것을 사용할지는 오브젝트 유형에 따라 다르다.

Database

인덱스 종류(알고리즘)

B-Tree 인덱스 탐색 성능을 높이기 위해 균형 있게 높이를 유지하는 자료구조. (Balanced Tree) 특징 OTLP(실시간으로 데이터 입력과 수정이 일어나는 환경)에 적합하다. 구조 트리 구조의 최상위에 하나의 루트 블록을 가지며, 그 하위에 노드가 붙어있는데 이 노드 중 가장 하위에 있는 노드를 리프 블록이라고 하며 루트 블록과 리프 블록 사이에 존재하는 블록을 브랜치 블록이라고 한다. 리프 블록 리프블록은 아래 두 개의 데이터로 이루어져 있으며 인덱스를 구성하는 칼럼의 데이터 해당 데이터를 가지고 있는 행의 위치를 가리키는 ROWID 리프 블록끼리는 이중연결 리스트 구조로 연결되어있다. 리프 블록의 각 로우와 테이블 로우 간에는 1:1 관계이고, 각 로우의 키 값과 각 테이블 로우의 키 값은..

Database

SQL 분석 도구

실행 계획을 확인할 수 있는 방법은 여러 가지가 있는데, 오라클이 기본으로 제공하는 쿼리 툴 SQL*Plus에서 아래 명령을 수행하면 실행계획이 PLAN_TABLE에 저장된다. explain plan for select * from emp where ename = :enmae ad deptno = :deptno; PLAN_TABLE에 저장된 정보를 읽어 분석하기 쉬운 형태로 포메팅하는 방법에 여러 가지가 있지만, 가장 쉬운 방법은 아래와 같이 dbms_xplan.display 함수를 사용하는 것이다. select * from table( dbms_xplan.display(null, null, 'typical') ); SQL Server에서 예상 실행계획을 출력하는 방법 set showpla..

Database

데이터베이스 I/O 매커니즘

블록 단위 I/O 오라클을 포함한 모든 DBMS에서는 블록과 비슷한 단위를 통해 I/O 작업을 수행하며, 대표적인 예시는 아래와 같다. 데이터파일에서 DB 버퍼캐시와 데이터파일 I/O 모두에 적용된다. 데이터파일에서 블록을 직접 읽고 쓸 때(Direct Path I/O) 버퍼캐시에서 블록을 읽고 쓸 때 버퍼캐시에서 변경된 블로긍ㄹ 데이터팡리에 쓸 때 버퍼 캐시 모든 DBMS는 사용 빈도가 높은 데이터 블록들이 더 오랫동안 남아있도록 하기 위해서 LRU 알고리즘을 사용한다. 모든 버퍼 블록 헤더를 LRU 체인에 연결해서 사용 빈도에 따라 수시로 위치를 옮기다가, Free 버퍼가 필요해질 때면 액세스 빈도가 낮은 데이터 블록들을 우선적으로 밀어낸다. Sequetial 엑세스, Random 액세스 시퀀셜 액세..

Database

SQL 처리과정

SQL 기본 개념 데이터베이스과 통신하는 기본적인 구조적 질의 언어이며, 구조적, 집합적, 선언적인 특징을 가지고 있다. SQL 처리 과정 파싱 사용자로부터 전달받은 SQL을 SQL 파서가 파싱하며, 이 과정에서 파싱 트리 생성, Syntax 체크(문법적 오류 체크), Semantic 체크(의미상 오류가 없는지 확인) 등을 수행한다. SQL 최적화 옵티마이저가 딕셔너리 테이블에서 미리 수집한 시스템 및 오브젝트 통계 정보를 바탕으로 다양한 실행 경로를 생성해 비교한 후 가장 효율적인 하나를 선택한다. DB의 효율을 결정짓는 가장 중요한 단계이다. 로우 소스 생성 sql 옵티마이저가 선택한 실행 경로를 실제 수행 가능한 코드 또는 프로시저 형태로 포맷팅 하는 단계다. 로구 소스 생성기가 이 역할을 맡으며,..

xlwdn98767
개발 조무사 IT 개발 블로그