1._트랜잭션_동시성_제어
2012.03.20 08:52
01 트랜잭션 동시성 제어
(1) 동시성 제어
l 동시성(Concurrency) : 다중 사용자가 같은 데이터를 동시에 엑세스
l 일관성(Consistency) : 자신이 발생시킨 변경 사항과 다른 트랜잭션의 변경 사항을 포함해 일관
성 있는 상태로 데이터를 제공
ü 오랜 기간 시스템을 운영하다 보면 데이터 구조가 점점 복잡해지고 데이터 정합성도 많이 흐트러져 새로운 업무요건에 빠르게 대응할 수 없는 상황에 직면하게 된다.
ð 근본적으로는 다중 사용자 환경에서 발생할 수 있는 갖가지 동시성 문제에 대한 충분한 고려 없이 시스템 개발이 이루어지는 데에 그 원인이 있다고 생각한다.
ü 동시 접속자 수가 점점 많아지고 있기 때문에 동시성에 대한 이슈는 훨씬 더 중요해졌다.
ü 동시성 제어란
ð 동시에 수행되는 트랜잭션 수를 최대화하면서도 입력, 수정, 삭제, 검색 시 데이터의 무결성이 유지될 수 있도록 노력하는 것
ð 여러 개 트랜잭션이 동시에 수행될 때, 데이터베이스 애플리케이션은 이들 트랜잭션이 서로 간섭을 일으키는 현상을 최소화하면서 데이터의 일관성과 무결성이 보장되도록 개발
ð 동시성 제어가 어려운 이유는 동시성과 일관성이 Trade-off 관계에 있다는 데에 있다.
ð 동시성을 높이려고 Lock의 사용을 최소화하면 읽기 일관성을 유지하기 어렵고, 데이터의 일관성을 높이려고 Lock을 많이 사용하면 동시성이 떨어지게 된다.
(2) 트랜잭션이란?
ü 여러 개의 수정작업이 하나의 작업처럼 전부 처리되거나 아예 전부 처리가 안 되도록(All or Nothing) 하는 것인데, 이러한 일의 최소 단위를 트랜잭션이라 한다.
ü 트랜잭션은 업무 처리의 기본 단위를 정의하는 것이므로 실제 애플리케이션 설계단계에서는 업무적인 관점에서 좀 더 포괄적으로 정의하게 된다.
(3) 트랜잭션의 특징(ACID)
ü 데이터베이스 갱신과 관련한 트랜잭션의 4가지 중요한 특징
ð 원자성(Atomicity) : 더 이상 분해가 불가능한 업무의 최소단위
ð 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이
터베이스 상태로 변환한다.
ð 격리성(Isolation) : 트랜잭션이 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접
근할 수 없다.
ð 영속성(Durability) : 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 데이터베이
스에 영속적으로 저장된다.
우리가 고가의 DBMS를 사용하는 이유로는 성능, 관리의 편의성 등 여러 가지 측면이 있지만, 무엇보다도 트랜잭션 처리 능력이 가장 기본적이고 핵심적인 요소라 할 수 있다.
트랜잭션 처리결과가 데이터의 일관성을 해치지 않도록 하려면 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화 장치가 필요하다
ð 이를 위해 DBMS가 공통적으로 사용하는 메커니즘이 Lock이다.
ð 오라클은 더 높은 수준의 읽기 일관성을 보장하기 위해 Undo 데이터를 활용한 독특한 읽기 일관성 모델을 사용하고 있다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
26 | 5장._데이터베이스_Call_최소화_원리 | 운영자 | 2012.05.07 | 4321 |
25 | 1._Call_통계 | 정찬호 | 2012.05.07 | 4310 |
24 | 5._바인드_변수의_중요성 | 시와처 | 2012.04.23 | 4299 |
23 | 10._Dynamic_SQL_사용_기준 | 남송휘 | 2012.05.07 | 4276 |
22 | 2._Memory_vs._Disk_IO | 정찬호 | 2012.05.23 | 4167 |
21 | 7._Result_캐시 | 운영자 | 2012.05.27 | 4157 |
20 | 8._IO_효율화_원리 | 운영자 | 2012.06.06 | 4121 |
19 | 3._Deterministic_함수_사용_시_주의사항 | 정찬호 | 2012.05.29 | 4091 |
18 | 1._Library_Cache_Lock_Pin | 남송휘 | 2012.05.21 | 3964 |
17 | 3._Single_Block_vs._Multiblock_IO | 정찬호 | 2012.05.23 | 3960 |
16 | 1._블록_단위_IO | 정찬호 | 2012.05.22 | 3925 |
15 | 6장._IO_효율화_원리 | 정찬호 | 2012.05.22 | 3808 |
14 | 4._Array_Processing_활용 | 시와처 | 2012.05.14 | 3770 |
13 | 11._Static_SQL_구현을_위한_기법들 | dasini | 2012.05.07 | 3736 |
12 | 1._SQL과_옵티마이저 | dasini | 2012.04.06 | 3612 |
11 | 4._Prefetch | 남송휘 | 2012.05.21 | 3596 |
10 | 8._PLSQL_함수_호출_부하_해소_방안 | 남송휘 | 2012.05.21 | 3458 |
9 | 3._데이터베이스_Call이_성능에_미치는_영향 | 시와처 | 2012.05.13 | 3382 |
8 | 6._V$SYSTEM_EVENT | 시와처 | 2012.04.01 | 3311 |
7 | 11._Shared_Pool | 박영창 | 2012.03.19 | 3163 |