![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNToir%2FbtrQ661ZbV9%2FaAe5liWICaQtvrTBIAp2Zk%2Fimg.png)
[Database] DBA급 개발자로 - #17 Timestamp Ordering Concurrency Control
2022. 11. 13. 11:25
Database/DBA급 개발자로
이전 포스팅에서는 2 phase locking을 통해 어떻게 concurrent transaction을 처리하는지 살펴봤습니다. 이번 포스팅에서는 timestamp를 통해 concurrent transaction을 처리하는 방법을 살펴보겠습니다. Timestamp Ordering Timestamp ordering 방식도 2 phase locking처럼 concurrent transaction을 처리하기 위한 프로토콜입니다. 주된 차이점은 2 phase locking의 경우 트랜잭션이 실행되는 과정에서 충돌이 발생하면 해당 트랜잭션을 롤백하지만 timestamp ordering의 경우 트랜잭션이 실행되기 전에 충돌 여부를 미리 확인합니다. 두 트랜잭션 Ti, Tj이 동시에 진행되고 트랜잭션이 시작된 시간이..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpiCQi%2FbtrP8Xzdhrz%2FpeiAHEH0nokrXizkcgc3u1%2Fimg.png)
[Database] DBA급 개발자로 - #15 Concurrency Control
2022. 11. 1. 17:55
Database/DBA급 개발자로
이전 포스팅에 쿼리 처리 비용을 계산해서 최적의 쿼리를 선택하는 방법에 대해 살펴봤습니다. 그리고 DBMS에서 동시에 실행되는 트랜잭션을 어떻게 처리하는지 살펴보겠습니다. Transaction Concurrency Control 트랜잭션의 동시성 처리가 왜 중요할까요? 동시에 실행된 다수의 트랜잭션이 하나의 데이터를 수정할 때 어떻게 데이터의 일관성을 유지할 수 있을까요? 가장 단순한 방법은 한 시점에 하나의 트랜잭션만 데이터에 접근할 수 있도록 하는 방법입니다(예를 들면 데이터에 접근하는 트랜잭션을 순차적으로 실행하는 방식입니다). 하지만 트랜잭션을 순차적으로 실행하면 처리 속도가 줄고 DBMS의 응답 시간이 길어질 수 있습니다. 이를 해결하기 위해서는 데이터의 일관성을 유지하면서도 트랜잭션을 동시에 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxVpkb%2FbtrLzQKz6eO%2FE5U7m27Dc84bfLkkrKayq0%2Fimg.png)
[Database] DBA급 개발자로 - #8 Index Concurrency Control
2022. 9. 7. 08:33
Database/DBA급 개발자로
이전 포스팅에서 B+Tree에 대해 살펴봤습니다. 이번 포스팅에서는 인덱스 동시성 문제를 어떻게 해결하는지 살펴보겠습니다. Concurrency Control 여태까지 논의했던 B+Tree는 단일 스레드 환경에서만 정상적으로 동작합니다. 멀티 스레드 환경에서는 두 개 이상의 스레드가 동일한 노드에 동시에 접근할 수 있습니다. DBMS는 concurrency control protocol을 통해 동시에 접근되는 데이터를 물리적 또는 논리적으로 보호합니다. 물리적 단위에서 데이터를 보호하는 것은 메모리 상의 데이터가 일관된 상태를 유지할 수 있도록 보호하는 것입니다. 논리적 단위에서 데이터를 보호하는 것은 논리적으로 스레드가 접근할 수 있는 데이터에 접근할 수 있도록 보장하고 접근할 수 없는 데이터는 접근할..