ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySql Database Lock
    공부하기/데이터베이스 2023. 2. 19. 02:04
    • 기능
      • 여러 클라이언트가 동시에 데이터를 접근(*동시성)하는 상황에서 데이터 일관성을 유지
    • 역할
      • 동시에 여러 개의 쿼리가 실행될 때, 쿼리 실행에 필요한 데이터에 대한 접근 권한을 부여하고, 다른 쿼리가 해당 데이터에 접근하지 못하도록 잠금
    • 주의 사항
      • 락이 걸려있는 동안 다른 쿼리는 대기해야 하므로, 락이 걸리는 시간이 길어질수록 시스템 전체의 처리 속도가 느려질 수 있다.
      • 또한, 락이 걸리는 범위가 크면 큰만큼 다른 쿼리가 접근할 수 있는 데이터의 범위가 줄어들게 된다.

     

    mysql 엔진 잠금 종류

    • 글로벌락 ( GLOBAL LOCK )
      • mysql에서 제공하는 잠금 가운데 가장 범위가 크다.
      • 특정 세션에서 글로벌 락을 얻으면 다른 세션에서는 select문을 제외한 대부분의 ddl문, dml 문장은 대기 상태가 된다.
      • mysql 서버 전체 lock
    • 테이블락 ( TABLE LOCK )
      • 개별 테이블 단위로 잠금 설정, 특정 테이블의 락을 획득한다.
      • 거의 사용할 일이 없다 .
      • InnoDB 테이블에서 대부분의 데이터 변경(DML) 쿼리는 무시되고 스키마를 변경하는 쿼리(DDL)의 경우만 영향을 미친다.
    • 네임드락 ( NAMED LOCK )
      • 함수를 이용해 임의의 문자열에 대해 잠금을 설정할 수 있다.
      • 자주 사용되지 않는다.
    • 메타데이터락 ( METADATA LOCK )
      • 데이터베이스 객체( 테이블, 뷰 )의 이름이나 구조를 변경하는 경우에 획득하는 잠금
      • 테이블의 메타데이터를 변경하는 경우 자동으로 획득 후 작업이 끝나면 반납
    • 레코드락 ( RECORD LOCK )
      • 레코드 자체 lock이 아니라 인덱스 레코드를 잠근다.
      • 인덱스가 하나도 없는 테이블이더라도 내부적으로 자동 생성된 클러스터 인덱스를 이용해 잠금을 설정한다.

    *동시성(concurrency) 

    • 여러 클라이언트가 동시에 데이터베이스에 접근하고 작업할 수 있는 능력을 의미
    • MySQL에서 동시성은 데이터베이스 시스템에서 매우 중요한 개념 중 하나이며, 동시성 제어트랜잭션 격리를 통해 데이터 일관성과 안정성을 보장
      • 동시성 제어(concurrency control)
        • 다수의 클라이언트가 동시에 데이터베이스에 접근할 때 데이터 일관성을 보장하기 위해 사용되는 기술
        • InnoDB는 MVCC(Multi-Version Concurrency Control) 방식을 사용하여 데이터 일관성을 유지
      • 트랜잭션 격리(transaction isolation) 
        • 각 트랜잭션에서 다른 트랜잭션의 영향을 받지 않고 실행되도록 보장하는 기술
        • MySQL에서는 트랜잭션 격리 수준을 설정할 수 있고 기본적으로는 Repeatable Read 격리 수준

     

     

    '공부하기 > 데이터베이스' 카테고리의 다른 글

    mysql 쿼리 실행 절차  (0) 2023.02.19
    MySql Isolation Level(격리수준)  (0) 2023.02.19
    다양한 데이터베이스 특징  (0) 2023.02.18
    MySQL UNION 요약  (0) 2023.02.10
    MySQL CTE 요약  (0) 2023.02.10
Designed by Tistory.