본문 바로가기

반응형

전체

[DB] 9. 트랜잭션(Transaction) - (4) 고립화 수준, 회복 기법 [목차] 1. 트랜잭션 고립화 수준 2. 트랜잭션 회복 기법 1. 트랜잭션 고립화 수준 트랜잭션 고립화 수준(Transaction Isolation Level)은 트랜잭션의 독립성, 고립성을 유지하기 위해 데이터에 대한 접근을 허용하는 수준을 말한다. 로킹(Locking) 기술을 기반으로 고립화 수준을 조정하며 총 4개의 레벨로 구성되어있다. 고립화의 수준에 따라 발생할 수 있는 문제점들이 있는데, 수준이 높아질수록 문제점이 줄어드는 형태이다. 다음과 같은 문제점들이 발생할 수 있다. 1) 부정 판독(Dirty Read) 부정 판독은 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다. 트랜잭션 T1이 특정 데이터를 갱신한 후 T2가 해당 데이터를 읽은 다음 T1이 Rollb..
[DB] 9. 트랜잭션(Transaction) - (3) 병행 제어, 로킹, 타임스탬프 [목차] 1. 병행 제어(Concurrency Control)란? 2. 병행의 문제점 3. 병행 제어 기법 1. 병행 제어(Concurrency Control)란? 병행 제어에 앞서, 먼저 병행에 대해서 알아보자. 병행(Concurrency)은 매우 빠르게 여러 트랜잭션 사이를 이동하면서 조금씩 처리를 수행하는 방식이다. 따라서 실제로는 한 번에 한 트랜잭션만 수행하지만, 마치 동시에 여러 트랜잭션을 수행하는 것처럼 보이도록 하는 것이다. 병행 제어(Concurrency Control)는 이렇게 트랜잭션이 병행 수행될 때 트랜잭션이 데이터베이스의 일관성을 파괴하지 않고, 다른 트랜잭션에 영향을 주지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다. 병행 제어의 목적은 다음과 같다. 데이터베이스의 일..
[DB] 9. 트랜잭션(Transaction) - (2) 트랜잭션 스케줄 & 충돌, 뷰 직렬 [목차] 1. 트랜잭션 스케줄 2. 충돌 직렬 가능 3. 뷰 직렬 가능 1. 트랜잭션 스케줄 데이터베이스에서 여러 트랜잭션이 동시에 수행될 때, 수행되는 트랜잭션의 순서에 따라서 결과가 달라질 수 있다. 이때 처리하는 순서를 스케줄이라고 한다. 트랜잭션 스케줄은 크게 3가지로 이루어져 있다. 직렬(Serial) 스케줄 : 트랜잭션 별로 연산을 순차적으로 수행하는 것 비직렬(Non-serial) 스케줄 : 인터리빙(Interleaving) 방식을 이용하여 트랜잭션들을 병행하여 수행하는 것 직렬 가능(Serializable) 스케줄 : 직렬성을 가진 스케줄. 트랜잭션이 동시에 수행되더라도 직렬 스케줄과 동일한 결과를 갖는 것 2. 충돌 직렬 가능 스케줄에 따라 결과가 달라지는 이유는 충돌(Conflict)이..
[DB] 9. 트랜잭션(Transaction) - (1) 특성, ACID, 연산, 상태 [목차] 1. 트랜잭션(Transaction)이란? 2. 트랜잭션의 특성 3. 트랜잭션의 연산 4. 트랜잭션의 상태 1. 트랜잭션(Transaction)이란? 트랜잭션(Transaction)은 데이터베이스에서의 논리적 작업 단위이다. 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산 기능들을 모아놓은 것이며 분리되지 않도록 하여 작업의 완전성을 보장한다. 트랜잭션을 통해서 데이터베이스의 회복과 병행 제어가 가능하다. 즉, 데이터베이스에서 오류가 발생하는 경우의 빠른 회복이나, 여러 사용자가 동시에 데이터베이스를 사용할 수 있도록 제어해주는 중요한 역할을 한다. 데이터베이스의 연산을 SQL문으로 표현한다면, 하나의 작업을 수행하는 SQL문의 집합으로 생각할 수도 있다. 2. 트랜잭션의 특성 트랜잭션이 ..
SCPC 2021 Round 2 후기 본선 한번 가보고 싶어서 12시간 거의 다 써서 참여했다. 작년 2라운드 0점의 성적보단 낫지만, 본선가기엔 턱없이 부족한 결과다. 아무리 생각해도 PS 실력이 너무나 애매한 수준인 것 같다.... 점점 퇴보하고 있는걸지도..? 우선 문제 자체도 어려웠다. 2번 문제는 초반에 페널티 신경쓰지 않고 막 제출하다가 어느 순간 1번의 기회만 남아버려서 잠시 미뤘는데, 나중에 다시 봤을 땐 풀이가 떠올랐지만 구현 실수인지 1틀을 더해버려서 제출을 더 못했다.... 무조건 풀었어야 하는 문제인데.. 3번 문제에만 거의 6~7시간은 쏟아부은 것 같다. 풀이를 들으니 문제가 너무 극혐이다... 4번 문제는 일단 완탐으로 4-1 테케만 긁고 3번에 올인했는데, 4-2 테케가 생각보다 할만했나보다. 아쉬움이 많이 남는 ..
[DB] 8. 정규형 (1NF, 2NF, 3NF, BCNF) [목차] 1. 제1 정규형 2. 제2 정규형 3. 제3 정규형 4. BCNF 정규형이란 정규화된 결과를 말하며, 제1 정규형, 제2 정규형, 제3 정규형, BCNF, 제4 정규형, 제5 정규형이 있다. 실무적으로 제4, 제5 정규형은 잘 쓰이지 않는다고 한다. 따라서 BCNF까지만 설명할 예정이다. 1. 제1 정규형 (1NF) 제1 정규형은 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다. 원자값이란 더 이상 쪼개질 수 없는 단위를 말한다. 예를 들어 위처럼 릴레이션이 이루어져 있다면, 제1 정규형을 만족하지 못한다. 학번이 100인 학생의 과목 번호와 성적이 2개로 이루어져 있기 때문이다. 따라서 제1 정규형이 되려면 다음과 같이 속성 값을 분리해주어야 한..
병렬 이분 탐색(Parallel Binary Search) 주어진 문제의 답이 단조성을 갖는 경우에는 Parametric Search를 이용하여 해당 문제를 해결할 수 있다. Parametric Search에 대해서 이미 잘 알고 있다면 스크롤을 아래로 내리자. 예를 들어 "N명의 사람이 나이순으로 정렬되어 있을 때, 20세 이상이면서 나이가 가장 작은 사람의 나이를 구하시오"와 같은 문제가 있다고 하자. 앞에서부터 다 확인한다면 O(N)의 시간이 걸리게 되지만, Parametric Search를 이용하면 O(logN)만에 해결할 수 있다. 먼저, 답이 될 수 있는 범위의 중간지점을 확인한다. 19는 20세 미만이므로 답이 될 수 없다. 그러면 현재 위치보다 왼쪽에 있는 나이들은 당연히 19 이하이기 때문에 답이 될 수 없다. 따라서 왼쪽은 더 이상 볼 필요가 ..
[DB] 7. 정규화 & 함수 종속성 & 이상현상 [목차] 1. 정규화가 생겨난 배경 2. 정규화란? 3. 반정규화란? 4. 함수 종속성 5. 이상현상(Anomaly) 1. 정규화가 생겨난 배경 한 릴레이션(Relation)에 여러 엔티티의 속성을 혼합하면 정보가 중복 저장되며 저장 공간을 낭비하게 된다. 또 중복된 정보로 인해 '이상 현상'이 발생하게 된다. 이러한 문제를 해결하기 위해 정규화 과정을 거치는 것이다. 2. 정규화란? Attribute 간의 종속성으로 인한 이상현상이 발생하는 릴레이션을 분해하여 재디자인함으로써 이상현상을 없애는 과정 데이터의 중복 방지, 무결성을 충족하기 위해 데이터베이스를 설계하는 방법 정규화에는 아래와 같은 3가지 원칙이 있다. 1. 정보의 무손실 : 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함..