MySQL에서 잠금 표시

Shraddha Paghdar 2023년6월20일 MySQL MySQL Lock
MySQL에서 잠금 표시

오늘 포스트에서는 MySQL에서 잠금을 표시하는 방법에 대해 알아보겠습니다.

MySQL에서 잠금 표시

테이블에 MySQL 잠금 플래그를 할당하여 테이블의 속성을 변경할 수 있습니다. 특정 기간 동안 다른 세션이 동일한 테이블에 액세스하지 못하도록 제한하기 위해 MySQL은 클라이언트-서버가 할당할 수 있는 테이블 잠금을 활성화합니다.

클라이언트는 해당 세션에 대해서만 MySQL 잠금획득하거나 해제할 수 있습니다. 이는 클라이언트가 다른 세션에 대한 잠금에 액세스하거나 다른 세션에서 보유한 잠금을 해제할 수 없음을 의미합니다.

MySQL은 읽기 잠금과 쓰기 잠금의 두 종류의 잠금을 제공합니다.

LOCK TABLES table_name READ as alias_table_name

여기서 table_name은 잠금을 적용해야 하는 테이블을 나타냅니다. 별칭으로 테이블을 잠글 때 문에서 해당 별칭을 사용하여 잠긴 테이블을 참조해야 합니다.

세션에 READ 잠금이 있는 경우 테이블에서 쓰기 작업을 수행할 수 없습니다. 이는 테이블에서 데이터를 읽기만 하는 READ 잠금 기능 때문입니다.

다른 어떤 세션도 READ 잠금을 해제하지 않고 테이블에 데이터를 쓸 수 없습니다. 따라서 그들은 모두 그렇게 할 수 없습니다. READ 잠금을 해제할 때까지 쓰기 작업은 대기 상태에 들어갑니다.

GET_LOCK()으로 얻은 고유한 이름의 잠금은 MDL 재구현의 결과로 성능 스키마 메타데이터 잠금 테이블에 표시됩니다. 잠금 이름은 OBJECT_NAME 열에 표시되고 OBJECT_TYPE 열에는 USER LEVEL LOCK이 표시됩니다.

이 지식의 도움으로 세션 간의 메타데이터 잠금 종속성을 이해할 수 있습니다. 세션이 어떤 잠금을 기다리고 있는지 뿐만 아니라 현재 해당 잠금을 제어하고 있는 것도 볼 수 있습니다.

메타데이터 잠금 테이블을 변경할 수 없습니다. 읽기 전용입니다.

이전 아이디어를 더 잘 이해하는 데 도움이 되도록 다음 예를 고려하십시오.

SELECT GET_LOCK('alias_table_name', 10);
SELECT * FROM performance_schema.metadata_locks WHERE OBJECT_TYPE='USER LEVEL LOCK'

이전 예시의 첫 번째 문은 제공된 잠금 이름에 대한 데이터를 가져옵니다. 이 경우 alias_table_name은 잠금 이름을 지정하고 10은 제한 시간을 나타냅니다.

정보는 메타데이터 잠금 테이블에서 검색됩니다. 여기서 개체 유형은 두 번째 문에서 USER LEVEL LOCK입니다.

MySQL과 호환되는 모든 브라우저에서 위의 코드 행을 실행하십시오. 다음과 같은 결과가 표시됩니다.

+----------------------------------+
| GET_LOCK('alias_table_name', 10) |
+----------------------------------+
|                                1 |
+----------------------------------+
1 row in set (0.00 sec)

*************************** 1. row ***************************
          OBJECT_TYPE: USER LEVEL LOCK
        OBJECT_SCHEMA: NULL
          OBJECT_NAME: alias_table_name
OBJECT_INSTANCE_BEGIN: 139872019610944
            LOCK_TYPE: EXCLUSIVE
        LOCK_DURATION: EXPLICIT
          LOCK_STATUS: GRANTED
               SOURCE: item_func.cc:5481
      OWNER_THREAD_ID: 35
       OWNER_EVENT_ID: 3
1 row in set (0.00 sec)
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn