Database 33

[ SQLD 이론 심화] Chapter 05. SQL 최적화 기본 원리

1. 옵티마이저와 실행 계획 옵티마이저란 사용자가 질의한 SQL문에 대한 최적의 실행방법을 결정하는 역할을 수행함 이러한 최적의 실행방법을 실행계획이라고 함 다양한 실행 방법중 최적의 실행 방법을 결정함 비용기반 옵티마이저 비용이 가장 적게 드는 실행계획을 선택하는 방식 (비용은 예상되는 시간 또는 자원을 의미함) 테이블, 인덱스 등의 통계정보와 시스템 통계정보를 이용하여 최적의 실행계획을 도출함 인덱스를 사용하는 비용이 전체 테이블 스캔 비용보다 크다고 판단되면 테이블 풀 스캔을 유도함 구성 요소 질의 변환기 : 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환 비용 예측기 : 생성된 대안 계획의 비용을 예측하는 모듈 대안계획 생성기 : 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 ..

Database 2021.07.30

[ SQLD 이론 심화] Chapter 04. SQL 활용

1. 표준 조인 일반 집합 연산자 vs SQL UNION연산 : UNION 기능으로 구현. INTERSECTION : INTERSECT 기능으로 구현 DIFFERENCE : EXCEPT 기능으로 구현 PRODUCT : CROSS JOIN 기능으로 구현 순수 관계 연산자 vs SQL SELECT : WHERE절로 구현 PROJECT : SELECT절로 구현 JOIN : JOIN절로 구현 DIVIDE : 현재 사용되지 않음 조인의 형태 INNER JOIN : JOIN조건에서 동일한 값이 있는 행만 반환 NATURAL JOIN : 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI 조인 수행 USING 조건절 : NATURAL JOIN 에서 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 ..

Database 2021.07.29

[ SQLD 이론 심화] Chapter 03. SQL 기본

1. 관계형 데이터베이스 개요 정규화를 통한 합리적인 테이블 모델링을 통해 이상현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리, 병행 제어를 통해 많은 사용자들이 동시에 데이터를 공유 및 조작 가능한 기능 제공 인증된 사용자만이 참조할 수 있도록 보안 기능을 제공함 데이터 무결성 제공 장애로부터 기존 데이터에 대한 작업이 제대로 반영될 수 있도록 보장해주며, 재해 등의 상황에서도 데이터를 회복/복구하는 기능을 제공 2. SQL DML 데이터 조작어 ( 조회, 수정, 삽입, 삭제 ) Select, Insert, Update, Delete DDL 데이터 정의어 (테이블 구조 생성, 변경, 삭제) Create, Alter, Drop, Rename DCL 데이터 제어어 (데이터 베이스에 객체들을 사..

Database 2021.07.29

[ SQLD 이론 심화] Chapter 02. 데이터 모델과 성능

1. 성능 데이터 모델링의 개요 데이터베이스의 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등 여러가지 성능과 관련된 사항이 데이터모델링에 반영될 수 있도록 하는 것 수행시점 사전에 할수록 비용이 들지 않음 고려사항 정규화 수행 용량 산정 트랜잭션의 유형을 파악하기 해당 프로젝트에 적합한 반정규화 수행 이력 모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 데이터모델 검증하기 2. 정규화와 성능 성능 향상 전략 정규화는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것 중복을 최소화하므로 한 테이블의 데이터 용량이 최소화됨 그렇지만 무조건 속도가 빠르다고는 할 수 없음..

Database 2021.07.29

[ SQLD 이론 심화 ] Chapter 01. 데이터 모델링의 이해

1. 데이터 모델의 이해 모델링의 정의 복잡한 현실세계를 단순화함. 일정한 표기법에 의해 표현함 모델링의 특징 추상화 : 현실세계를 일정한 형식에 맞추어 표현함 단순화 : 제한된 표기법이나 언어로 표현 명확화 : 누구나 이해하기 쉽게 애매모호함을 제거하고 정확하게 기술함 모델링의 세가지 관점 데이터 관점 : 업무가 어떠한 데이터와 관련이 있는지 프로세스 관점 : 무엇을 해야하는지 상관 관점 : 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 데이터 모델링의 중요성 파급효과(Leverage) : 데이터 모델링을 시작으로 시스템이 개발되므로 중요 간결한 표현 데이터 품질 : 데이터의 중복, 비 유연성, 비 일관성이 발생할 수 있음 데이터 모델링의 3단계 진행 개념적 데이터 모델링 : 추상화 수준이 높고..

Database 2021.07.29

[ SQLD 이론 기초 ] Chapter 08. 백업 및 복구

1. 지속성과 성능이 양립하는 구조 로그 선행 기입 기법 write-ahead logging 모든 수정은 적용 이전에 로그에 기록됨 데이터베이스 버퍼 데이터 파일로의 입력을 데이터베이스 버퍼 경유로 일원화 트랜잭션마다 버퍼 취할 경우 로그와 데이터 파일 간 일관성 저하 효율적인 데이터 일관성 유지 Crash 발생 시, 발생 순간까지 쓰기 한 포인트 지점까지 데이터파일에 적용함. 2. 백업 및 복구 백업의 3가지 관점 - 핫 백업 : DB 정지 안하고 백업 콜드 백업 : DB 끄고 백업 - 논리 백업 : SQL 문으로 백업 물리 백업 : 데이터를 그대로 덤프하는 이미지로 바이너리 형식 기록 - 풀 백업 : 전체 백업 부분 백업 : 풀 백업 이후 갱신된 데이터를 백업 -> 증분 백업 : 그날 바뀐 부분만 -..

Database 2021.07.28

[ SQLD 이론 기초 ] Chapter 07. 테이블 설계

1. 테이블 설계의 기초 테이블이란 데이터 관리 및 저장하는 장소 2차원 표와 유사 2. 테이블 설계 규칙 집합을 나누는 방법 기본키의 중요성 기본키는 특정 집합에서 특정 행을 유일하게 식별할 수 있는 속성의 집합 기본키는 중복되면 안됨. NULL 허용 안됨. 3. 정규형 테이블을 정의하는 기본 형태. 제대로 된 형태를 뜻함. 정규형을 지키는 행위를 정규화 위반이라 부름 1NF 위반 테이블의 셀에 여러 개의 값을 포함하지 않는다 한 컬럼에 두가지 값이 들어가 있음 * 함수 종속성 테이블은 함수와 같아 기본키의 값을 입력하면 특정 출력 값이 나오는 구조이다 입력 X의 경우 반드시 한 개의 출력 Y 결정됨 2NF 부분함수 종속성을 허용하지 않음 기본키를 구성하는 열의 일부에만 함수 종속이 존재함 이러한 경..

Database 2021.07.28

[ SQLD 이론 기초 ] Chapter 06. 트랜잭션

1. 트랜잭션이란 시스템에 요청명령을 한부에 끝낸 상태 트랜잭션의 4대 특징 - 원자성 : 데이터 조작이 전부 성공 혹은 실패할지 보증하는 구조 - 일관성 : 데이터 조작 전후에 일관성 유지 필요 - 고립성 : 복수 사용자가 동시에 데이터 조작 실행할 경우 각각의 처리가 모순 없이 실행되는 것을 보증 - 지속성 : 데이터 조작 완료 후 완료 통지 받는 시점에서 결과를 잃지 않는 것. 즉, 트랜잭션이 Commit 되고 나면 데이터 변경 사항이 영구적으로 확정되도록 보장하는 것. 2. 트랜잭션 처리의 필요성 원자성 트랜잭션은 전부 성공하거나 혹은 전부 실패해야 한다. 부분 성공이라는 단어는 절대로 존재하면 안됨 고립성 사용자 A가 해당 데이터를 조작중이라면 다른 사용자들은 사용자 A가 작업이 끝날때까지 데이..

Database 2021.07.28

[ SQLD 이론 기초 ] Chapter 05. SQL기본

* 오라클 기본 아키텍처 - Oracle Listener : 인증 - Server Process : SGA와 통신 - SGA : 버퍼캐시. (캐시 매커니즘) - Redo Log File : 복구를 위해 로그 저장 1. SELECT 문 DUAL 테이블 : 연산 처리 시 사용 SELECT (10 + 5) / 2 AS VAL FROM dual; ORDER BY 문 디폴트가 ASC ASC : 오름차순 DESC : 내림차순 SELECT Name FROM CUSTOMERS ORDER BY NAME DESC; SELECT DISTINCT DISTINCT문을 쓰면 SELECT절의 기재된 값이 중복이 제거되어 출력된다. 유일한 ROWS을 출력 WHERE절 : SELECT절에 조건을 주어 검색함 LIKE : 특정 문자열 ..

Database 2021.07.28