Index
1. 동시성 이슈란 무엇인가?
2. 자바에서 동시성 이슈 해결
3. 데이터베이스 동시성 제어
4. 분산 데이터베이스 동시성 제어
- 동시성 이슈란 무엇인가?
동시에 여러 개의 스레드, 프로세스 또는 작업이 공유된 자원에 접근하여 수정하는 과정에서 발생하는 문제들이다.
동시성 이슈는 크게 세가지 조건이 충족될 때 발생할 수 있다.
1. 공유 자원에 접근
2. 동기화 없이 접근
3. 적어도 하나의 스레드가 자원을 변경
동시성 이슈를 방지하기 위해서는 위 세가지 조건 중 하나를 끊으면 된다. 보통은 동기화를 통해 이 문제를 해결한다.
자바의 synchronized, lock 키워드나 데이터베이스의 락을 활용해 제어하는 경우가 많다.
* 공유 자원이란 무엇인가?
공유자원은 여러 프로세스나 스레드가 동시에 접근할 수 있는 메모리, 파일, 데이터베이스 등을 말하며, 분산 시스템에서는 네트워크를 통해 공유되는 자원도 포함된다.
- 메모리에서는 프로세스나 스레드가 동시에 접근하고 읽거나 쓸 수 있는 메모리 공간을 공유 자원이라고 한다.예를 들면, 힙 영역과 메타스페이스가 여기에 속하며, 자바에서는 synchronized나 lock을 사용해 관리하기 때문에 비교적 제어가 쉬움.
- 파일에서는 여러 프로세스가 동시에 접근할 수 있기 때문에 제어가 까다롭다. 이러한 경우 OS 내부에서 락을 획득해 제어함.
- 데이터베이스에서는 여러 사용자가 네트워크를 통해 공유 자원에 접근하기 때문에 트랜잭션 관리와 동시성 제어가 중요하다.
* 임계영역이란 무엇인가?
임계 영역은 서로 다른 트랜잭션이 동일한 공유 자원에 접근하여 변경할 수 있는 영역이다.
이 영역에서 각 트랜잭션의 스케줄이 수행되며, 동시성 이슈가 발생할 수 있고, 발생하지 않을 수도 있다.
serial schedule과 non-serial schedule
스케줄은 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션의 작업 실행 순서를 의미.
스케줄을 통해 동시 실행을 간단히 표현할 수 있다.
Serial schedule의 예
트랜잭션1이 A 자원을 읽고 쓰기를 완료한 후 트랜잭션2가 A 자원을 읽고 쓰는 순서이다.
각 작업이 순차적으로 실행되기 때문에 동시성 이슈가 발생하지 않는다.
Non-serial schedule의 예
트랜잭션1이 작업을 완료하기 전에 트랜잭션2가 작업을 시작한다.
이 경우 동시성 이슈가 발생할 위험이 있다.
(1) 동시성 이슈란
동시성 이슈가 뭐고 발생하는 원인이 뭔가요? 동시성 이슈는 다음 세 가지 조건이 충족될 때 발생할 수 있습니다. 공유 자원에 접근한다. 동기화 없이 접근한다. 적어도 하나의 스레드가 자원을
evoblog.life
'Computer Science > Concept' 카테고리의 다른 글
동시성 이슈 - 분산 데이터베이스 동시성 제어 (0) | 2024.12.11 |
---|---|
동시성 이슈 - 데이터베이스 동시성 제어 (0) | 2024.12.11 |
동시성 이슈 - 자바에서 동시성 이슈 해결 (0) | 2024.12.11 |