이 글은 해당 글을 바탕으로 내용을 추가하여 올리는 글입니다 !! 병행 제어 (Concurrency Control) 병행 제어란 여러개의 트랜잭션이 실행될 때 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않고 다른 트랜잭션에 영향을 주지 않으면서 트랜잭션을 제어하는 것을 말한다. 매우 빠르게 트랜잭션 사이를 이동하면서 조금씩 처리를 수행하는 방식이다. 실제로는 한번에 한 트랙잭션만 수행하지만 마치 동시에 여러 트랜잭션을 수행하는 것처럼 보인다. 병행제어의 목적 데이터베이스의 공유와 시스템 활용도의 최대화 데이터베이스의 일관성 유지 사용자에 대한 응답시간을 최소화 단위 시간당 트랜잭션 처리수 최대화 트랜잭션이 동시에 실행된다면 ? Dirty Write 같은 데이터에 대해 동시에 두 개 이상의 트랜잭션이 값..
무결성 (Integrity)이란 ? 무결성이란 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다. 무결성이 유지되어야 DB에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰가 생긴다. 데이터의 무결성을 유지하는 것은 데이터베이스 관리시스템(DBMS)의 중요한 기능이며 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다. 무결성의 종류 개체 무결성 참조 무결성 고유 무결성 NULL 무결성 개체 무결성 기본키로 선택된 필드는 NULL 값을 허용하지 않는다. 참조 무결성 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야 한다. 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다. → 즉, 릴레이션은 참조할 수 ..
트랜잭션의 격리 수준 및 필요성 트랜잭션의 격리성(Isolation)은 트랜잭션 수행시 서로 끼어들지 못하는 것을 말한다. 복수의 병렬 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동되어야 하고, 데이터베이스는 여러 사용자가 같은 데이터에 접근할 수 있어야 한다. 만약 Locking을 통해 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하는 방식으로 구현한다면 데이터베이스의 성능은 떨어지게 될 것이다. 하지만 그렇다고해서 성능을 높이기 위해 Locking의 범위를 줄인다면 잘못된 값이 처리될 문제가 발생하게 된다. 트랜잭션 수준 읽기 일관성을 지키기 위해 필요하다. 다시 말하자면, 동시성 제어 문제 해결을 위해서이다. 따라서 트랜잭션을 여러개의 격리 수준으로 나누어 격리성을 보장한다. ※..
트랜잭션 (Transaction)이란 ? 트랜잭션이란 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. DML(Data Manipulation Language)를 통해 데이터베이스에 접근하는 것을 의미한다. 작업 단위란 ? 그렇다면 작업 단위라는 것은 무엇을 말하는 것일까 ? 작업 단위는 사용자가 특정 기능을 수행을 위해 SQL 작업을 묶은 단위를 의미한다. A가 B에게 돈을 보내는 송금 서비스를 생각해보자 송금 서비스는 1. A가 돈을 보낸다. 2. B가 그 돈을 안전하게 받는다. 라는 두가지 작업이 완료되어야 완전히 실행되었다고 할 수 있다. 만약 두 과정이 별개의 트랜잭션 즉, 별개의 작업 단위로 분리되어 실행되었다고 생각해보자 A가 돈을 10,000원 송금하면 A의 잔액 데이터에서 1..
정규화 (Normalization)란 ? 정규화의 기본 목표는 데이터의 중복을 없애는 것이다. 중복을 허용하지 않음으로써 삽입, 갱신, 삭제 시에 발생할 수 있는 각종 이상현상을 방지하여 데이터의 무결성을 유지한다. 이로써 데이터베이스의 저장 용량또한 효율적으로 관리할 수 있다. 💡 데이터의 무결성이란 ? 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 정확성 : 중복이나 누락이 없는 상태 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 정규화의 장/단점 장점 데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다. 무결성을 지키고 이상 현상을 방지한다. 테이블 구성을 논리적이고 직관적으로 할 수 있도록 한다. 데이터베이스 구조의 확장에 용이해진다. 단점 릴레이션의 분해..
디스크 읽기 방식 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD) 컴퓨터 대부분의 주요 장치는 대부분 디지털 방식이지만 HDD는 아날로그 방식의 장치이다. 디지털 방식으로 동작하는 주요 장치 간의 데이터 소통은 굉장히 빠르지만 HDD만 그 페이스에 맞추지 못하는 상황이 발생한다. 그래서 DB에서 디스크 장치는 항상 병목이 되어 느려지는 현상이 빈번한데 이러한 기계식 디스크 드라이브를 대체하기 위해 나온 것이 SSD(Solid State Drive)이다. 데이터베이스 서버에서 순차 I/O 작업의 비중이 크지 않고 랜덤 I/O를 통해 작은 데이터를 읽고 쓰는 작업이 많아 DBMS에는 SSD가 더 적합하다. 랜덤 I/O와 순차 I/O 디스크 드라이브는 데이터를 읽을 때 원판 플레터를 회전하며..