본문 바로가기

concurrency control2

[Concurrency Control]Multiple Granularity Locking 락을 거는 단위에 대해서 살펴보자. 아이템에 락을 걸 때 단위가 다양하다. 즉, DB가 계층적으로 구성되어 있다고 하면 락을 걸게 되었을 때 노드의 자식 노드에 대해서도 동일한 락을 건다는 뜻을 담는다. 계층적 구조에서 root에 X락을 걸었다면 모든 하위 노드에도 X락을 걸게된다. 또한 root가 아닌 하위 노드에서 X락을 걸려면 부모부터 root까지 IX락이 걸려있어야 한다. 학생 테이블에서 평균값을 구하는 상황을 생각해보자. 단위를 레코드 처럼 작게 설정하면 트랜잭션에서 락을 걸 때 concurrency가 높다. 하지만 모든 학생 레코드를 읽으려면 오버헤드가 크다. 단위를 테이블 처럼 크게 설정하면 락을 걸 때 테이블에 대해서만 락을 걸면 된다. 학생들의 평균 값을 구할 때 테이블에 락을 걸면 오버.. 2020. 6. 1.
[Transaction] Concurrency Control concurrency control은 두 가지 조건을 만족시켜야한다. 1. conflict or view serializable 2. recoverable and preferably cascadeless 현실적으로 스케줄을 수행하고 serializability를 체크하는 것은 오래 걸린다. 자동적으로 concurrency control을 할 수 있는 방법은 없을까? 답은 database system에 concurrency control protocol이 들어있다. protocol대로 처리하면 자동적으로 serializable 해지고 recoverable해진다. lock이나 multiversion, timestamp 을 사용하여 concurrency control을 보장하며 장단점이 존재한다. concur.. 2020. 5. 30.