MySQL에서 잠금 표시

Shraddha Paghdar 2023년6월20일
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)
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