SHOW LOCKS

리소스에 대한 잠금이 있는 실행 중인 트랜잭션을 전부 나열합니다. 이 명령을 사용해 모든 사용자 세션의 현재 사용자 또는 계정의 모든 사용자에 대한 잠금을 표시할 수 있습니다.

트랜잭션 및 리소스 잠금에 대한 자세한 내용은 트랜잭션 을 참조하십시오.

참고 항목:

SHOW TRANSACTIONS

구문

SHOW LOCKS [ IN ACCOUNT ]

매개 변수

IN ACCOUNT

계정의 모든 사용자에 대한 모든 잠금을 반환합니다. 이 매개 변수는 ACCOUNTADMIN 역할을 사용하는 사용자(계정 관리자)가 실행할 때만 적용됩니다.

다른 모든 역할의 경우 이 함수는 현재 사용자의 모든 세션에 대한 잠금만 표시합니다.

출력

명령 출력에서는 다음 열의 잠금 메타데이터가 표시됩니다.

열

설명

resource

정규화된 테이블 이름 또는 트랜잭션 ID입니다.

type

PARTITIONS (표준 테이블 잠금의 경우) 또는 ROW (하이브리드 테이블 잠금의 경우)입니다.

transaction

트랜잭션 ID(부호 있는 64비트 정수)입니다.

transaction_started_on

트랜잭션이 실행을 시작한 시점을 지정하는 타임스탬프입니다.

status

트랜잭션의 현재 상태: HOLDING 또는 WAITING.

acquired_on

잠금이 획득된 시점을 지정하는 타임스탬프입니다.

query_id

SQL 문의 내부/시스템 생성 식별자입니다.

session

세션 ID(ACCOUNTADMIN 역할이 있는 사용자에게만 표시됨)입니다.

사용법 노트

  • 명령 출력은 리소스에 대한 잠금이 있는 실행 중인 모든 트랜잭션에 대한 IDs를 포함합니다. 이러한 IDs는 지정된 트랜잭션을 중단하기 위해 SYSTEM$ABORT_TRANSACTION 의 입력값으로 사용할 수 있습니다.

  • 하이브리드 테이블의 경우 이 명령은 트랜잭션이 차단되거나 다른 트랜잭션을 차단 중인 경우에만 잠금을 표시합니다.

  • 이 명령을 실행하기 위해 실행 중인 웨어하우스가 꼭 필요하지는 않습니다.

  • 이 명령은 현재 사용자의 현재 역할에 하나 이상의 액세스 권한이 부여된 오브젝트만 반환합니다.

  • MANAGE GRANTS 액세스 권한은 그 권한을 보유한 자가 계정에 있는 모든 오브젝트를 볼 수 있도록 암시적으로 허용합니다. 기본적으로, 계정 관리자(ACCOUNTADMIN 역할 이 있는 사용자)와 보안 관리자(SECURITYADMIN 역할이 있는 사용자)만 MANAGE GRANTS 권한을 가집니다.

  • 이 명령의 출력을 후처리하기 위해 파이프 연산자 (->>) 또는 RESULT_SCAN 함수를 사용할 수 있습니다. 두 구문 모두 출력을 쿼리할 수 있는 결과 세트로 간주합니다.

    예를 들어, 파이프 연산자 또는 RESULT_SCAN 함수를 사용하여 SHOW 명령 출력에서 특정 열을 선택하거나 행을 필터링할 수 있습니다.

    출력 열을 참조하는 경우 열 이름에 :ref:`큰따옴표로 묶인 식별자<label-delimited_identifier>`를 사용합니다. 예를 들어, 출력 열 ``type``을 선택하려면 ``SELECT “type”``을 지정합니다.

    SHOW 명령의 출력 열 이름은 소문자이므로 큰따옴표로 묶인 식별자를 사용해야 합니다. 큰따옴표는 SELECT 목록 또는 WHERE 절의 열 이름이 스캔된 SHOW 명령 출력과 일치하도록 보장합니다.

  • 이 명령은 명령을 실행하는 데 사용된 역할에 대한 액세스 권한에 따라 지정된 오브젝트 유형에 대해 최대 1만 개의 레코드를 반환합니다. 필터를 적용하더라도 1만 개 레코드 제한을 초과하는 레코드는 반환되지 않습니다.

    10,000개 이상의 레코드가 존재하는 결과를 보려면 Snowflake Information Schema 에서 해당 뷰(있는 경우)를 쿼리하십시오.

예

다음 예에서 트랜잭션은 지정된 표준 테이블(resource 열에서 이름이 지정된 테이블)에 대한 잠금을 보유하고 있습니다.

SHOW LOCKS;
+---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------+
| resource                  | type       |         transaction | transaction_started_on        | status  | acquired_on                   | query_id                             |
|---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------|
| CALIBAN_DB.PUBLIC.WEATHER | PARTITIONS | 1721330303831000000 | 2024-07-18 12:18:23.831 -0700 | HOLDING | 2024-07-18 12:18:49.832 -0700 | 01b5c1c6-0002-8691-0000-a9950068a0c6 |
+---------------------------+------------+---------------------+-------------------------------+---------+-------------------------------+--------------------------------------+

다음 예에서 트랜잭션은 하이브리드 테이블에 대한 행 수준 잠금을 보유하고 있습니다. 또 다른 트랜잭션이 해당 잠금을 기다리고 있습니다.

SHOW LOCKS;
+---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------+
| resource            | type |         transaction | transaction_started_on        | status  | acquired_on | query_id                             |
|---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------|
| 1721165584820000000 | ROW  | 1721165584820000000 | 2024-07-16 14:33:04.820 -0700 | HOLDING | NULL        |                                      |
| 1721165584820000000 | ROW  | 1721165674582000000 | 2024-07-16 14:34:34.582 -0700 | WAITING | NULL        | 01b5b715-0002-852b-0000-a99500665352 |
+---------------------+------+---------------------+-------------------------------+---------+-------------+--------------------------------------+