Grobble
PCC, OCC에 대해서 본문
병렬프로그래밍수업 1주차에서 잠깐 언급된 PCC와 OCC에 대해서 잊어버리지 않도록 간단히 정리하고 사견을 덧붙인다.
Concurrency Control
Concurrency Control, 즉 동시성 제어란 여러 쓰레드가 가까운 도메인에서 동시에 작업하고 있을 때, 같은 오브젝트에 대하여 동시에 수정을 가하거나, 규칙에 맞지 않는 PropertySet를 읽어들이는 일을 방지하는 것이다.
이것을 달성하기 위해서, 작업을 시작하기 전 미리 검사하는 방법(Pessimistic)과 우선 작업을 수행한 뒤 나중에 고치는 방법(Optimistic)이 있다.
Pessimistic Concurrency Control (PCC)
PCC에서는 주로 거대한 LockTable이 존재해서, 어떤 Transaction이 들어왔을 때 이것이 어떤 오브젝트에 어떻게 접근하는 지를 분석한 후에, 필요한 만큼 기다린 후에 해당 Transaction이 실행될 수 있도록 한다.
(Transaction을 분석하면 해당 작업에 필요한 ObjectSet을 얻을 수 있을 것인데, 이 ObjectSet간의 Intersection이 존재하는지 빠르게 알아내거나, 이미 쌓이고 쌓인 Transaction들의 대기열에 새로운 Transaction을 어느 곳에 집어넣을 수 있을 지 검사하는 것 등이 주요 이슈가 될 것 같다.)
Optimistic Concurrency Control (OCC)
OCC에서는 작업이 들어왔을 때 검사 없이 바로 필요한 작업이 수행되지만, 당연하게도 Conflict가 일어나지 않는다는 보장이 없다. 때문에, 수정할 오브젝트들의 복사본에 작업을 수행한 뒤, 다른 Transaction에서도 수정되었는지 검사해서 이러한 Conflict가 일어났다면 Rollback을 수행하고 그렇지 않다면 Commit한다.
'공부' 카테고리의 다른 글
Classpath Index (0) | 2023.07.29 |
---|---|
Pinpoint 개발 환경 구축 (0) | 2022.01.29 |
Simple random search provides a competitive approach to reinforcement learning (0) | 2021.08.07 |
Sim-to-Real: Learning Agile Locomotion ForQuadruped Robots (0) | 2021.07.19 |