본문 바로가기

데이터베이스

(23)
DB Block, Extends, Segment 1. Data Blocks - DB I/O를 위한 최소한의 논리적인 데이터 단위 2. Extent - Block들을 논리적으로 연결한 Data File에 저장되는 저장단위 - 익스텐트 내 블록들은 물리적이 아닌 논리적으로 인접. - Segment에 논리적으로 인접한 Extent들은 물리적으로 인접하지 않을 수 있음. 3. Segment : - Extent들이 논리적으로 이어진(물리적으로 이어진 것은 아니다) 저장 단위 ( ex) Table ) - 테이블이나 인덱스 같은 Object등을 생성할시 Segment가 생성. - 파티션 테이블과 같은 Partition으로 생성된 경우 1:M 관계를 갖고 그 외에는 1:1 관계를 가짐 - 한 세그먼트는 자신이 속한 Table Space내 여러 Data file에 저..
Buffer Cache Hit Ratio 일반적으로 오라클은 필요한 데이터를 Block(오라클에서 I/O시의 기본적인 입출력 단위)단위로 읽는다. 그리고 Sort Mege Join을 통한 읽기나, 대용량 배치 서비스를 위한 설정을 추가하거나 하지 않는 한 SGA(System Global Area)내의 DB buffer cache를 경유하여 읽는다. 그러므로 Buffer Cache내에서 읽지못해 DISK를 통해 읽을 경우 Buffer Cache에 해당 데이터를 적재한 후에 읽는다. 물리적인 I/O가 위에 해당하는 Disk이고 논리적인 I/O는 Query + current이다. 위에 말한것처럼 항상 Buffer Cache를 경유하여 읽는다고 하였으므로 ((물리적으로 읽은 I/O) / (논리적으로 읽은 I/O)) * 100 인 Buffer Cache..
BitMap Index 사용 이유. 일반적인 B*tree 구조의 Index와 달리 bitMap Index는 NULL값도 검색이 가능하다. NULL값에 대해서도 기록한다. 이에 대해서 2가지 장점을 가진다. 1. 보통의 Index는 NULL값도 포함하지만 조건절에서 IS NOT NULL을 통해 검색을 할 경우 INDEX FULL SCAN을 유발한다. BIT맵의 경우 NULL에 대한 값을 기록하므로 INDEX RANGE SCAN이 가능하다. 2. 시작 rowid와 종료 rowid만을 기록하고 중간값을 BITMAP Index의 offset을 활용하므로 일반적인 B*tree Index에 비해서 검색이 조금 더 빠르다. 하지만 결국 BITMAP INDEX도 DISK를 경유한 TABLE에 대한 SCAN발생시 I/O를 유발하므로 보통 INDEX와 크게..
인덱스 Skew 및 Fragment Index Skew - 인덱스 엔트리가 왼쪽 또는 오른쪽에 치우치는 현상 DELETE FROM T WHERE NO
함수 1. GREATEST : 값중 가장 높은 값을 리턴한다. 2. LEAST : 값중 가장 작은 값을 리턴한다. NULL값을 포함한다면 무조건 NULL값이 나온다.
집계 함수시 range ~ and ~ 옵션 현재 매출에 관계된 데이터들의 집계 함수를 가져올때, 누적매출액을 포함해서 데이터를 가져오고 싶은 경우가 있다. 예를 들어 위와 같은 데이터가 존재한다고 가정하자. 지점별로 판매월순으로 누적매출액을 구한다고 할때 사용하는 방법은 SUM 집계함수를 이용해 지점 컬럼을 파티션으로 묶고 판매월순으로 ORDER BY 를 진행하는것이다. SUM(매출) OVER (PARTITION BY 지점 ORDER BY 판매월 @옵션) 여기서 옵션에 들어가는 부분이 RANGE BETWEEN ~ AND ~ 이다. 옵션에는 RANGE BETWEEN을 이용한 방법과 ROWS BETWWEN ~ AND를 이용한 방법이 있고 그 안에서도 UNBOUNDED PRECEDING AND CURRENT ROW와 (숫자) PRECEDING AND ..
7. 집계 함수 오라클에는 많은 집계 함수들이 존재한다. EX) SUM(), COUNT(), MIN()..... 집계함수의 작동 원리에 대해서 설명해보자 한다. col1 col2 col3 ======================= 10 20 NULL 15 NULL NULL 50 70 20 해당 테이블이 존재한다고 가정하자. 집계함수는 COUNT(*)을 제외하고는 NULL값은 포함시키지 않는다. 따라서 SUM(COL2)를 한순간 20 + NULL(제외) + 70 = 90이 나오게 된다. 여기서 평균을 구하고 싶으면 SUM(COL2) / COUNT(COL2)를 통해 구하면 된다. 하지만 전체 로우 건수를 기준으로 평균을 구하고 싶다면 SUM(COL2)/COUNT(*)으로 구하면된다. SUM(COL + COL2 + COL3)..
6. 데이터형 데이터 타입 데이터 타입이란 컬럼이 저장되는 데이터 유형을 말합니다. 오라클에서 기본적으로 제공하는 기본 데이터 타입과 이 기본데이터 타입을 혼합하여 만들 수 있는 사용자 정의 데이터 타입으로 구분할 수 있습니다. 기본 데이터 타입은 문자형, 실수, 소수, 자료형 등의 여러 데이터를 식별하는 타입입니다. 문자 데이터 타입 데이터타입 설명 CHAR(n) 고정길이 문자 / 최대 2000byte / 디폴트 값은 1byte VARCHAR2(n) 가변길이 문자 / 최대 4000BYTE / 디폴트 값은 1byte NCHAR(n) 고정길이 유니코드 문자(다국어 입력가능) / 최대 2000byte / 디폴트 값은 1byte NVARCHAR(n) 가변길이 유니코드 문자(다국어 입력가능) / 최대 2000byte / 디폴..