목록전체 글 (106)
개발스토리
트랜잭션 읽기 쓰기 시나리오 트랜잭션 동시 실행 문제 ■ 오손읽기(uncommitted dependency) - 읽기 작업을 하는 트랜잭션1이 쓰기 작업을 하는 트랜잭션2가 작업한 중간 데이터를 읽기 때문에 생기는 문제 - 작업 중인 트랜잭션2가 어떤 이유에서 작업을 철회(ROLLBACK)할 경우 트랜잭션1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출하는 현상 ■ 반복 불가능 읽기(inconsistent analysis) - 트랜잭션1이 데이터를 읽고 트랜잭션2가 데이터를 쓰고, 트랜잭션1이 다시 한 번 데이터를 읽을 때 생기는 문제 - 트랜잭션1이 읽기 작업을 다시 한 번 반복할 경우 이전의 결과와 다른 결과가 나오는 현상 ■ 유령 데이터 읽기(phantom read) - 트랜잭션1이 데이터를 ..
병행 수행(concurrency) - 여러 사용자가 데이터베이스를 동시 공유할 수 있도록 여러 개의 트랜잭션을 동시에 수행하는 것을 의미 - 여러 트랜잭션이 차례로 번갈아 수행되는 인터리빙(interleaving) 방식으로 진행된다. 인터리빙 방식 주기억장치에 접근하는 속도를 빠르게 하는데 사용된다. 메모리 인터리빙 기법은 인접한 메모리 위치를 서로 다른 메모리 뱅크(bank)에 둠으로써 동시에 여러 곳을 접근할 수 있게 하는 것이다. ■ 병행 제어(concurrency control)또는 동시성 제어 - 병행 수행 시 같은 데이터에 접근하여 연산을 실행해도 문제가 발생하지 않고 정확한 수행 결과를 얻을 수 있도록 트랜잭션의 수행을 제어하는 것을 의미한다. 병행 수행 시 발생할 수 있는 문제점 ■ 갱신 ..
전 포스팅(회복과 병행제어1)에서 트랜잭션의 개념을 읽히고 오시면 도움이 됩니당~ 트랜잭션의 개념을 이제 알았다면 아래 그림까지 확인하시면 더 도움이 될 겁니다! ● 위 트랜잭션 수행 과정 - 박지성 계좌와 김연아 계좌의 값을 하드디스크(데이터베이스)에서 주기억장치 버퍼로 읽어온다. - 박지성 계좌에서 10,000원을 인출한 값을 저장한다. - 김연아 계좌에서 10,000원을 입금한 값을 저장한다. - 박지성 계좌와 김연아 계좌의 값을 주기억장치 버퍼에서 하드디스크(데이터베이스)에 기록한다. ● 트랜잭션의 종료(COMMIT)을 알리는 방법 방법1) 1-2-3-4-COMMIT-5-6 방법2) 1-2-3-4-5-6-COMMIT DBMS는 사용자에게 빠른 응답성을 보장하기 위해 방법1을 채택한다. 방법2의 트..
자자자자!!! 회복과 병행 제어를 이해하려면 기본 단위인 트랜잭션의 개념을 알아야 한다. 그러고나서, 데이터베이스를 장애로부터 복구하는 다양한 회복 기법을 익히고, 여러 사용자가 동시에 접근할 수 있도록 트랜잭션 수행을 통제하는 병행 제어 기법을 익혀보자잉 트랜잭션(transaction) ■ 트랜잭션의 개념 - 하나의 작업을 수행하는데 필요한 데이터베이스 연산들을 모아놓은 것 - 작업 수행에 필요한 SQL문 들의 모임. 특히, 데이터베이스를 변경하는 추가, 삭제, 수정문의 실행을 관리 - 논리적인 작업의 단위 - 장애 발생 시 복구 작업이나 병행 제어 작업을 위한 중요한 단위로 사용된다. - 데이터베이스의 무결성과 일관성을 보장하기 위해 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 제대로 정의하고 관..
■ 이상(anomaly) 현상 - 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입/수정/삭제 연산을 수행할 때 발생할 수 있는 부작용을 말한다. 디비는 중복을 너무 싫어한다... 그럼, 먼저 이상 현상의 종류부터 알아보자..! 삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 갱신 이상 중복 튜플 중 일부만 변경해서 데이터가 불일치하게 되는 문제 삭제 이상 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 ■ 정규화 - 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정이다. - 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해(decomposition)하는 과정이다. - 함수적 종속성..