일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SQLP
- intellij
- 친절한SQL튜닝
- B*Tree
- 결합인덱스구조
- SQLD
- 오라클
- 파이썬
- Oracle
- 데이터모델링
- leetcode215
- database
- 리눅스
- B*Tree인덱스구조
- 조인
- 클린코드
- db
- 오라클튜닝
- 클린 코드
- 알고리즘
- index fast full scan
- RAC
- SQL튜닝의시작
- heapq
- 로버트C마틴
- B*Tree인덱스
- join
- table full scan
- clean code
- 리트코드215
- Today
- Total
목록Database (22)
개발노트
ERD(Entity Relationship Diagram) 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법이다. 1976년 피터첸(Peter Chen)이 만든 표기법으로, 사실상 데이터 모델링의 표준으로 사용되고 있다. ERD 작성 절차 1) 엔터티를 도출하고 그린다 2) 엔터티를 배치한다 - 중요한 언터티는 왼쪽 상단에 배치 3) 엔터티 간의 관계를 설정한다 4) 관계명(행위 or 존재)을 서술한다 5) 관계 참여도(관계수)를 표현한다 6) 관계의 필수 여부를 표현한다
데이터 모델링의 주요 특징 특징 설명 추상화(Abstraction) 현실세계를 간략하게 표현 단순화(Simplification) 누구나 쉽게 이해할 수 있도록 표현 명확성(Clarity) 명확하게 의미가 해석되어야 하고 한 가지 의미를 가짐 데이터 모델링 단계 단계 설명 개념적 모델링 전사적 관점에서 기업의 데이터를 모델링한다 추상화 수준이 가장 높은 모델링이다 업무 측면에서 모델링하며, 기술적인 용어는 가급적 사용하지 않는다 엔티티와 속성을 도출하고 개념적 ERD를 작성한다 논리적 모델링 개념적 모델링을 논리적 모델링으로 변환하는 작업이다 식별자를 도축하고 필요한 모든 릴레이션을 정의한다 정규화를 통해서 재사용성을 높이고, 데이터 모델의 독립성을 확보한다 물리적 모델링 구축할 데이터베이스 관리 시스템에..
커서(Cursor) Cursor 는 Oracle 서버에서 할당한 전용 메모리 영역에 대한 포인터이다. 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치(포인터) 값이다. 커서는 Select 문의 결과 집합을 처리할 때 사용한다. 암시적 커서(Implicit Cursor) 오라클 DB에서 실행되는 모든 SQL문장은 암시적인 커서가 생성되며, 커서 속성을 사용할 수 있다. 모든 DML과 PL/SQL SELECT 문에 대해 선언된다. 암시적인 커서는 오라클이나 PL/SQL 실행 매커니즘에 의해 처리되는 SQL 문장이 처리되는 곳에 대한 익명의 주소이다. Oracle 서버에서 SQL 문을 처리하기 위해 내부적으로 생성/관리한다. 암시적 커서는 SQL문이 실행되는 순간 자동으로 Open 과 Close 를 실..
일반적인 조인 메서드 선택 기준 1) 소량 데이터 조인 → nl 조인 2) 대량 데이터 조인 → 해시 조인 3) 대량 데이터 조인인데 해시 조인으로 처리 불가할 때 → 소트 머지 조인 ** 조인 조건식이 등치(=)가 아니거나, 카테시안 곱일 때 수행빈도가 매우 높은 쿼리에 대한 조인 메서드 선택 기준 1) (최적화된) nl 조인과 해시 조인 성능이 같다면 → nl 조인 2) 해시 조인이 약간 더 빠르면 → nl 조인 => 수행빈도가 높은 소량 데이터 조인은 설령 해시 조인이 약간 더 빠르더라도 nl 조인을 선택하라 3) nl 조인보다 해시조인이 매우 빠르면 → 해시 조인 nl 조인을 가장 먼저 고려해야 하는 이유는? nl 조인에서 사용하는 인덱스는 공유 및 재사용하는 자료구조다. 반면, 해시테이블은 단 ..
기본 메커니즘 1. build 단계 : 작은 쪽 테이블(build input)을 읽어 해시 테이블(해시 맵)을 생성한다. 2. probe 단계 : 큰 쪽 테이블(probe input)을 읽어 해시 테이블을 탐색하면서 조인한다. * use_hash 힌트로 해시조인을 유도한다. SQL 수행과정 SELECT /*+ ordered use_hash(E) */ E.EMPNO, E.ENAME, E.SAL, D.DNAME FROM DEPT D INNER JOIN EMP E ON D.DEPTNO = E.DEPTNO AND E.SAL > 1500 AND E.JOB = 'SALESMAN' WHERE D.DNAME = 'SALES' ; Execution plan -----------------------------------..
PGA 오라클 서버 프로세스는 SGA 에 공유된 데이터를 읽고 쓰면서, 동시에 자신만의 고유 메모리 영역 PGA 를 갖는다. PGA 는 프로세스에 종속적인 고유 데이터를 저장하는 용도로 사용한다. 할당받은 PGA 공간이 작아 데이터를 모두 저장할 수 없을 때는 Temp 테이블스페이스를 이용한다. * temp tbs 는 물리적 disk 형태로 존재한다. PGA 는 다른 프로세스와 공유하지 않는 메모리 공간으로, 래치 메커니즘이 불필요하다. → 같은 양의 데이터를 읽더라도 SGA 버퍼캐시에서 읽을 때보다 훨씬 빠르다. Sort Merge Join 기본 메커니즘 이름이 의미하는 것처럼 2단계로 진행한다. 1. 소트 단계 : 양쪽 집합을 조인 컬럼 기준으로 정렬한다. 2. 머지 단계 : 정렬한 양쪽 집합을 서로..
SQL 트레이스를 통해 수집한 CALL 통계 정보 disk : 디스크에서 물리적으로 읽은 블록 개수 query + current : DB 버퍼 캐시에서 읽은 총 블록 개수 query : consistent 모드로 읽은 블록수(db buffer cache 에서 쿼리 scn 시점보다 작거나 같은 데이터 블록을 찾아 읽음) current : current 모드로 읽은 블록 수(db buffer cache 에 저장된 가장 최근 업데이트 된 데이터 블록을 읽음) mvcc(multi-version concurrency control) 모델 current 모드 : 디스크에서 db 버퍼 캐시로 적재된 원본 블록을 현재 상태 그대로 읽는 방식 consistent 모드 : 쿼리 SCN 과 블록 SCN 을 비교해서 쿼리가 ..
NL 조인 특징 요약 1. 랜덤 액세스 위주의 조인 방식 *랜덤 액세스는 레코드 하나를 읽기 위해 블록을 통째로 읽는다. 2. 조인을 한 레코드씩 순차적으로 진행 → 부분범위 처리가 가능, Driving 테이블 처리 범위에 따라 전체 일량 결정 3. 인덱스 구성 전략이 중요 따라서, NL 조인은 소량 데이터를 주로 처리하거나, 부분범위 처리가 가능한 온라인 트랜잭션 처리(OLTP) 시스템에 적합한 조인 방식이라고 할 수 있다. 기본 메커니즘 NL JOIN = Nested Loop Join SELECT E.사원명, C.고객명, C.전화번호 FROM 사원 E, 고객 C WHERE E.입사일자 >= '19960101' AND C.관리사원번호 = E.사원번호 사원 : Outer Table, Driving Tab..