이상 현상과 정규화
·
DB
이상현상 (Anomaly)좋은 관계형 데이터 베이스를 설계하는 목적 중 하나가 정보의 이상현상이 생기지 않도록 고려해 설계하는 것이다.이상현상이란 DB 설계할 때 잘못 설계하여  데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다.이러한 이상현상에는 삽입이상, 삭제이상, 수정이상 이렇게 세 개가 있다.아래는 잘못된 설계로 만들어진 테이블의 예시이다.삽입이상삽입 이상이란 데이터를 삽입할 때 의도치 않은 값이 삽입되는 논리적 오류를 말한다.예를 들어 '이상철'이라는 개인정보만 입력하고 싶은데, 강의명이 null값으로 들어가게 되는 오류가 발생한다. 갱신이상갱신 이상이란 중복된 데이터를 수정 중 일부 데이터만 수정이되는 논리적 오류를 말한다.예를 들어 '김현수'의 나이를 22로 바꾸고 싶은데, ..
트랜잭션 ACID 원칙
·
DB
ACID 란?트랜잭션이 반드시 지녀야하는 특징을 정해놓은 원칙이다.트랜잭션이란? 하나의 논리적 작업의 단위를 말한다.ACID 원칙을 보장해야 DB 트랜잭션이 정상적으로 수행된다.Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(영속성) 으로 이루어져 있다. Atomicity - 원자성원자성이란 변경사항이 모두 반영되거나, 아예 반영이 되지 않는 속성을 말한다.즉, 부분만 반영되는 것이 아닌 전부 커밋(commit)되거나 롤백(rollback)시키는 속성이다. -> 일부만 성공을 허용하지 않는다.개발자가 코드를 짜면 DBMS가 수행을 해주는 방식이다. Consistency - 일관성트랜잭션 이전과 이후의 DB는 항상 일관돼야 한다는 원칙이다.즉, ..
낙관적 락 과 비관적 락
·
DB
낙관적 락Application Level 에서 관리하는 Lock을 뜻한다.읽기 작업이 빈번하게 일어나고 쓰기 작업같은 경우 적게 일어날 때 이 방법이 유용하다.버전과 TimeStamp 등의 방식을 활용하여 충돌 검사를 수행한다.transaction 1 이 karol(id = 2) 조회transaction 2 이 karol(id = 2) 조회transaction 2 이 karol(id = 2) 를 karol2로 변경 요청Application이 변경요청을 받고 name 변경과 함께 version을 변경을 DB에 요청 후 적용trasaction 1에서 karol(id = 2)를 karol1으로 변경 요청했으나 버전이 달라 실패  비관적 락DB Level에서 관리하는 Lock을 뜻한다.항상 충돌이 일어난다는 가..
인덱스 (index) (2)
·
DB
인덱스 스캔 방식1. INDEX RANGE SCAN인덱스를 이용해 필요한 부분만 탐색하는 방법가장 대표적인 인덱스 탐색방법실행 계획 : INDEX (RANGE SCAN) OF '인덱스명' (INDEX)선두 칼럼을 가공하지 않은 상태로 조건절에 사용2. INDEX FULL SCAN인덱스를 전부 탐색하는 수평적 탐색 방법이다.실제 데이터까지 가진 않는 경우도 있어 더 빠를 순 있지만 인덱스를 사용하는 의미가 없기 때문에 차선책으로 등장했다.실행 계획 : INDEX (FULL SCAN) OF '인덱스 명' (INDEX)  3.  INDEX UNIQUE SCAN등호(=)를 사용한 경우 수행되는 기법이다수직적으로만 탐색을 하는 방법실행 계획 : INDEX (UNIQUE SCAN) OF '인덱스명' (INDEX) ..
인덱스 (Index)
·
DB
인덱스란?DB에서 보다 더 빠른 조회를 하기 위해서 특정 컬럼에 대해서 물리적인 주소를 저장해 놓는 것인덱스는 주로 WHERE절의 최적화를 위해 설계되는 것이 주류이다.과도한 인덱스 생성은 오히려 성능을 떨어뜨리는 효과를 초래한다.인덱스 또한 DB의 테이블 객체이기 때문에 저장공간을 차지한다. 그래서 과도한 인덱스는 불필요한 공간을 차지한다.테이블에 쓰기 작업을 하게될 경우 인덱스 또한 동기화 시켜줘야하기 때문에인덱스는 독립적으로 존재할 수 없다. -> 다른 테이블에 의존적이다.인덱스의 동작 방식인덱스의 동작 방식을 알기 전에 먼저 클러스터링 인덱스(Clustering Index)와 세컨더리 인덱스(Secondary Index, Non Clustering Index) 를 알아볼 필요가 있다. 클러스터링 ..
순차 IO / 랜덤 IO
·
DB
전기적 장치에 비해 발전 속도가 비교적 느린 기계적 장치컴퓨터의 전기적 특성을 지닌 장치(CPU, Memory)는 매우 빠르게 발전된데 비해 디스크와 같은 기계적 장치는 발전 속도가 느리다.최근에는 SSD가 등장하여 HDD보다 성능이 나아졌으나, 여전히 느리다.즉, DB의 성능 튜닝은 어떻께 IO를 줄이느냐가 관건이다 -> 쿼리 튜닝을 해야하는 이유일반적으로 DB에서 쿼리를 튜닝하라는 것은 랜덤 IO 자체를 줄여주는 것이 목적이다. 즉, 랜덤 IO를 줄인다는 것은 쿼리를 처리하는 데에 꼭 필요한 데이터만 읽도록 쿼리를 개선하는 것을 의미한다. 순차 IO란?데이터를 하나의 물리적 주소를 이용하여 이동한 뒤 순차적으로 조회 및 쓰기작업을 하는 것데이터가 저장된 하나의 물리적 주소만을 이용한다. 랜덤 IO란?..
구조적 질의어 (SQL, Structured Query Language) ( 3 )
·
DB
VIEW란?뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상의 테이블이다.뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다.뷰는 데이터 보정작업, 처리과정 시험 등 입시적인 작업을 위한 용도로 활용된다.뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화한다. ** SELECT 절의 처리순서에 대해서 설명해주세요.FROM (+JOIN)쿼리의 첫번째 실행 순서는 FROM 절이다 FROM 절에서는 조회할 테이블을 지정한다.이후 JOIN을 실행하여 하나의 가상 테이블로 결합한다.WHERE조건에 맞는 데이터를 필터링한다.GROUP BY선택한 칼럼을 기준으로 조회한 레코드 목록을 그룹핑한다.HAVING그룹핑 후에..
구조적 질의어 (SQL, Structured Query Language) ( 2 )
·
DB
데이터 정의어 ( Data Definition Language, DDL)- 데이터 정의어란?DB를 정의하는 언어, 데이터를 생성, 수정, 삭제등의 데이터 전체 골격을 결정하는 역할을 한다. INDEX, VIEW, SCHEMA, DOMAIN, TABLE을 정의하거나, 변경 또는 삭제할 때 쓰이는 언어데이터 베이스 관리자나 설계자가 사용한다.- 구문CREATE : DB & Table 생성DROP : DB & Table 삭제ALTER : 테이블 수정TRUNCAT : 테이블 초기화RENAME : 테이블 이름 변경☆ RDB에서 말하는 데이터와 레코드...DB라는 전체 저장소에 테이블이라는 형식의 데이터를 저장하고, 테이블에는 각각의 값에 해당하는 레코드를 행으로 저장한다. 데이터 조작어 (Data Manipula..