jinsusong / CS-Study

CS
3 stars 5 forks source link

병행성 제어를 위해 사용되는 Locking의 종류에는 어떤 것이 있나요? #100

Open jinsusong opened 1 year ago

developer-sora commented 1 year ago

데이터베이스 병행성 제어(Concurrency Control)는 여러 사용자가 동시에 데이터베이스에 접근하고 수정할 때 데이터 일관성을 유지하기 위해 사용되는 기술입니다. 병행성 제어를 사용하지 않으면 여러 사용자가 동시에 데이터를 수정하려고 할 때 데이터의 일관성이 깨질 수 있습니다.

병행성 제어는 일반적으로 락(lock)이나 트랜잭션 격리 수준(Transaction Isolation Level) 등의 기술을 사용하여 데이터 일관성을 유지합니다. 락은 다른 사용자가 접근하지 못하도록 데이터에 대한 액세스를 제어하는 데 사용됩니다. 락은 공유 락(Shared Lock)과 배타적 락(Exclusive Lock)으로 나뉘며, 공유 락은 여러 사용자가 데이터를 읽을 수 있지만 수정할 수는 없고, 배타적 락은 데이터를 수정하고자 하는 사용자가 해당 데이터를 배타적으로 사용할 수 있도록 합니다.

트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행될 때 각 트랜잭션의 데이터를 다른 트랜잭션과 격리하는 데 사용됩니다. 격리 수준에 따라 여러 트랜잭션 간에 데이터 일관성이 유지될 수 있지만, 동시에 여러 트랜잭션이 수행될수록 성능 저하가 발생할 수 있습니다.

데이터베이스 병행성 제어는 데이터 일관성을 유지하기 위해 필수적인 기술입니다. 그러나 이를 너무 강력하게 적용하면 성능 저하나 데드락(Deadlock) 등의 문제가 발생할 수 있으므로 적절한 수준에서 적용해야 합니다.