• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (107)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (25)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • DB Lock을 처음 경험한 날
      2025년 03월 18일
      • 31514
      • 작성자
      • 2025.03.18.:02

      나의 업무 중에 특정 CSV 파일을 읽어, 데이터를 파싱하고 테이블에 풀리프레쉬 방식으로 삽입하는 작업이 있다.

      백엔드 개발자의 요청으로 해당 스크립트를 실행했는데, 데드락에 걸리는 상황이 발생했다.

       

      일단 원인은 나의 스크립트 안에 테이블을 삭제하고 다시 생성하는 코드가 포함되어 있는데, 이 타이밍에 백엔드 개발자가 데이터를 조회했기 때문에 락(Lock)이 발생했다.

       

      위 이미지는 `t_pole_image`라는 테이블에 `AccessExclusiveLock`이 걸린 모습이다.

      `AccessExclusiveLock`은 가장 강력한 테이블 락(Lock)으로, 해당 테이블의 모든 작업을 차단한다.

      빨간색 박스 안에 있는 두 줄을 살펴보면, 하나의 세션에서는 `AccessExclusiveLock`을 획득(`granted = t`)했지만,

      다른 세션에서는 획득하지 못한 상태인 것을 확인할 수 있다.

      따라서 여러 세션에서 동시에 이 Lock을 획득하려고 시도했기 때문에 교착 상태(Dead Lock)이 발생한거다.

       

      이를 해결하기 위해서 postgres가 실행되고 있는 Docker Container를 재시작했다.

       

      나머지 `RowShareLock`과 `AccessShareLock`에 대해서 간단하게 설명하면 다음과 같다.

      • `RowShareLock`: 특정 행에 대한 변경을 방지하지만, 읽기는 허용한다.
      • `AccessShareLock`: 다른 트랜잭션이 읽는 것은 가능하지만, 테이블 구조 변경은 금지한다.

       

       

      '개발' 카테고리의 다른 글

      .pyc 파일  (0) 2025.06.10
      Airflow 컨테이너를 새로운 우분투 유저로 올리면서 생긴 일  (0) 2025.05.12
      LATERAL JOIN에 대해 알아보자.  (0) 2025.03.17
      SQLAlchemy와 psycopg2 중 어느 것을 사용할까?  (0) 2025.03.06
      Pandas의 벡터 연산  (0) 2025.03.06
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바