Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

랄지 IT

동시성제어 본문

이론

동시성제어

바낭나 2021. 12. 1. 20:40

동시성 제어란, 

트랜잭션의 일관성 처리 위해 

트랜잭션간 상호작용 제어하는 것이다. 

 

 

데이터베이스는 다수의 사용자들이 동시에 접근하는 경우가 빈번하게 발생한다. 

이에 따른 통제가 이루어지지 않으면 데이터 베이스의 무결성이 깨지고, 

의도하지 않은 결과가 반환될 수도 있다. 

 

dbms는 동시성 제어 라는 기능을 제공하여 데이터베이스의 무결성을 보호하고, 

트랜잭션이 항상 정확하고 일관된 데이터를 참조할 수 잇도록 해야 한다. 

 

 

직렬성은 일정한 순서를 가지고 순차적으로 실행되는 것을 뜻하고, 

 

동시성은 트랜잭션들이 순서와 상관없이 동시에 실행되는 것이다. 

 

즉 동시성 제어는 동시에 실행되는 트랜잭션을 제어하기 위한 것이라고 할 수 있다. 

 

동시성 제어의 기법으로 대표적잉ㄴ 것이 잠금(Locking)기법이다. 

대부분의 dbms에서 사용한다. 

 

동시에 실행되는 트랜잭션들이 서로 간에 간섭함으로써 갱신 분실(lost update), 연쇄 복귀(cascading rollback) 또는 회복 불가능(Unrecoverability), 불일치 분석(inconsistent analysis) 등과 같은 문제들이 발생할 수 있다.

 

 

끼어들기로 인한 문제들의 해결방법? 

-

직렬 스케줄로 만들거나, 직렬 가능한 스케줄로 ㅁㅏㄴ들어야 한다. 

(순차적 실행, 하지만 다중 프로그래밍 환경에서 최적의 방법으로 볼 수 없다.)

 

다중 사용자 dbms에서는 동시성(병행수행)을 최대한 보장하면서 직렬 스케줄과 동일한 ㄱㅕㄹ과를 얻을 수 있는 직렬 가능한 스케줄로 ㅁㅏㄴ드는 것이 가장 좋은 방법이다. 

 

잠금(로킹)은 트랜잭션의 실행 순서를 강제로 ㅈㅔ어하여 짖ㄱ렬 가능한 스케줄이 되도록 보장하는 방법이다. 

 

하나의 트랜잭션이 실행되는 동안 다른 트랜잭션이 동시에 접근하지 못하도록 사ㅏㅇ호배제하는 기능, 

 

잠금에 사용되는 ㅇㅕㄴ산으로 lock 연산과 unlock 연산이 있다. 

 

 

 

잠금 단위 

잠금의 대상이 되는 데이터 객체의 킄기를 의미한다. 레코드의 필드값 부터, 테이블이나 데이터베이스까지 하나의 잠금 단위가 될 수 있다. 

 

잠금 단위가 클수록 동시성(병행성0 수준은 낮아지고, 동시성 제어 기법은 간단해진다. 

 

잠금 단위가 작을 수록 동시성(병행성)수준은 높아지고, 관리는 복잡해진다.. 

 

잠금의 한계 및 해결 방법 

1. 직렬 가능한 스케줄이 항상 보장 되지 않음 

 >> 순서대로 실행이 항상 보장 ㄴㄴ란 뜻 

 >> 2단게 잠금 규약(2PL)로 해결 가능 

 >>> 란> 잠금을 설정하는 화ㅏㄱ장단계와 해제하는 축소 단계로 나누어 수행한다. 

>> 연쇄 복귀 문제 발생 가능성이 있다. 

 

2. 교착상태(데드락)이 발생할 ㅅㅜ 있다. 

 >> 모두 대기상태에 들어가 더이상 진행되지 못하는 상태 

>> 외부에서 강제로 트랜잭션 중단하거나 잦ㅁ금 해제 하는 방법 밖에 방법 없음;