ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MariaDB Lock(이론)
    Database 2023. 4. 1. 15:16

    Database에서의 Lock

    데이터베이스에서 LOCK은 트랜잭션이 데이터를 읽거나 쓰는 과정에서 다른 트랜잭션과의 충돌을 방지하는 데 사용됩니다.
    LOCK은 크게 SHARED LOCKEXCLUSIVE LOCK 두 가지 유형이 있습니다.

    데이터베이스에서 LOCK은 트랜잭션 간의 충돌을 방지하고 데이터 일관성을 유지하는 데 매우 중요합니다. 따라서 적절한 LOCK 유형을 선택하여 데이터베이스에서 발생할 수 있는 충돌을 최소화하는 것이 중요합니다.

    SHARED LOCK

    다른 트랜잭션에서 데이터를 읽을 수는 있지만, 쓰기 작업은 할 수 없도록 제한합니다.
    즉, 읽기 작업에 대해서는 다른 트랜잭션과 공유할 수 있지만, 쓰기 작업에 대해서는 배타적으로 사용해야 합니다.
    SHARED LOCK은 동시에 여러 개의 트랜잭션에서 동일한 데이터를 읽을 수 있도록 합니다.
    따라서 SHARED LOCK은 읽기 작업을 수행할 때 사용됩니다.

    SELECT 쿼리를 실행할 때는 일반적으로 SHARED LOCK이 적용됩니다

    EXCLUSIVE LOCK

    다른 트랜잭션에서 데이터를 읽거나 쓰는 것을 모두 제한합니다.
    EXCLUSIVE LOCK은 배타적으로 사용되며, 하나의 트랜잭션에서만 사용할 수 있습니다.
    EXCLUSIVE LOCK은 쓰기 작업을 수행할 때 사용됩니다.

    보통 데이터베이스에서 LOCK은 트랜잭션이 데이터를 수정할 때 자동으로 발생합니다.

    EXCLUSIVE LOCK 이 자동으로 적용되는 경우는 다음과 같습니다.

    • INSERT
    • UPDATE
    • DELETE

    EXCLUSIVE LOCK은 다른 트랜잭션이 동시에 해당 행에 대해 쓰기 작업을 수행하지 못하도록 보호합니다.

    INSERT 에서의 EXCLUSIVE LOCK
    INSERT 쿼리를 실행할 때, 새로운 데이터를 추가하면서 해당 행에 대한 EXCLUSIVE LOCK이 발생합니다.
    이후에 다른 트랜잭션에서 동일한 행에 대해 INSERT 쿼리를 실행하려고 하면,
    해당 행에 대한 EXCLUSIVE LOCK이 이미 적용되어 있으므로 쓰기 작업이 불가능합니다.

    데이터베이스에서는 INSERT 쿼리를 실행할 때,
    새로운 데이터를 추가하면서 자동으로 AUTO_INCREMENT 값을 생성합니다.
    이 과정에서도 AUTO_INCREMENT 값을 생성하는 행에 대해 EXCLUSIVE LOCK이 자동으로 적용됩니다.
    따라서 AUTO_INCREMENT 값을 생성하는 행에 대해서도 동시에 쓰기 작업이 수행되지 않도록 보호됩니다.

    INSERT 쿼리에서는 다른 트랜잭션에서 데이터를 읽거나 쓰는 경우가 없으므로 SHARED LOCK은 적용되지 않습니다.

    'Database' 카테고리의 다른 글

    넥스트 키 락(Next-Key Lock) in Database Systems  (0) 2024.08.06
    Phantom Rows  (0) 2024.08.06
    MariaDB Isolation  (0) 2023.04.01
    MariaDB Lock(실전)  (0) 2023.04.01
    MariaDB Index 1편  (0) 2023.03.20

    댓글

Designed by Tistory.