All thing of the world!

Postgresql pg_advisory_lock 설명 : 포스트그레스큐엘 함수 본문

IT/Postgresql DBMS

Postgresql pg_advisory_lock 설명 : 포스트그레스큐엘 함수

WorldSeeker 2021. 4. 15. 10:29

1. 함수의 목적

   

    Postgresql pg_advisory_lock 함수는 입력인수로 지정한 키에 해당되는 row에 세션레벨의 배타적(exclusive) Advisory Lock을 건다. 함수 사용시 출력되는 결과값은 없다. 이 함수 대신 pg_try_advisory_lock을 사용하면 결과값으로 성공시 'true', 실패시 'false'를 반환 받을 수 있다.

해당 함수로 건 lock은 세션종료시 자동으로 해제된다. 

* Advisory Lock 이란 Postgresql DB 시스템 레벨의 Lock이 아닌 사용자 혹은 어플리케이션에서 설정하는 lock이며 lock의 설정 및 해제책임은 사용자 혹은 어플리케이션에 있다. 

* 공유(shred) Lock 이란 lock이 설정된 대상은 lock이 풀릴때까지 쓰기는 금지되고, 읽기만 허용

* 배타적(exclusive) Lock이란 lock이 설정된 대상은 lock이 풀릴때까지 읽기와 쓰기 모두 금지



 

2. 샘플을 통한 개념 퀵뷰

 

    SELECT pg_advisory_lock(id) FROM foo WHERE id = 12345;

 

    pg_advisory_lock

    ----------------------

    

 

 

3. 사용방법

 

    pg_advisory_lock ( key bigint )

    pg_advisory_lock ( key1 integer, key2 integer 

    

4. 함수 PARAMETER 설명

 

[key]

Advisory Lock을 걸고자 하는 bigint, integer 타입의 키를 지정한다.

 

 

5. 다양한 샘플 표현

 

1) example 테이블의 idx='1'인 row에 Advisory Lock을 건다

 

SELECT pg_advisory_lock(idx) FROM example e2 WHERE idx = 1; 

 

 

 Posgresql 내장함수 모음 : atotw.tistory.com/category/IT/Postgresql%20DBMS

 

Comments