2016-07-27 2 views
0
나는 SELECT FOR UPDATE psql의 명령 https://www.postgresql.org/docs/9.1/static/explicit-locking.html

PSQL : UPDATE

를 사용하여 데이터베이스를 통해 잠금 구현하기 위해 노력하고

선택을 통해 잠금 행 I는 명령이 데이터베이스 수 있다는 사실 외에 주변에 이렇게 많은 문서를 찾을 수 없습니다 행 기반 잠금

스레드 1이 SELECT FOR UPDATE을 먼저 실행하면 스레드 2가 곧 실행되어 동일한 명령을 실행하려고하면 어떻게되는지 궁금합니다. 스레드 1의 데이터베이스 트랜잭션이 커밋되거나 롤백 될 때까지 스레드 2가 차단됩니까?

+0

왜 사용해 보지 않으시겠습니까? 스레드 대신에 PostgreSQL 데이터베이스에 2 세션을 열고 트랜잭션에서 차례대로 명령을 실행하여이를 시뮬레이션 할 수 있습니다. – sstan

답변

1

예, 스레드 2는 스레드 1이 완료 될 때까지 대기합니다.

NOWAIT 또는 SKIP LOCKS을 사용하여 작업이 대기하지 않도록 할 수 있습니다 (SELECT in the documentation 참조).