설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 73건, 최근 0 건
   

AccessExclusive Lock 과 select 문

글쓴이 : PostgresDBA 날짜 : 2015-01-06 (화) 23:31 조회 : 4380
첫번째 세션을 맺고  트랜잭션 안에서 테이블 truncate 를 수행합니다.
commit 이나 rollback 수행은 하지 않았습니다. 즉, 트랜잭션 종료 전입니다.
scottdb=> create table x(x int);
CREATE TABLE
scottdb=> begin;
BEGIN
scottdb=> truncate table x;      -- 예전강좌에서 말씀드렸듯이 PostgreSQL 에서는 drop 과 truncate 까지 롤백가능합니다.
TRUNCATE TABLE
scottdb=> select * from x;
 x 
---
(0 rows)
scottdb=> 


이제 두번째 세션에서 위의 x 테이블을 조회해보면 행이 발생합니다.
scottdb=> select * from x;  -- 행상태

DROP TABLE, TRUNCATE, REINDEX, CLUSTER,  VACUUM FULL, ALTER TABLE .. 이런 명령어들은
AccessExclusiveLock 을 잡기 때문에 타 세션의  동일 테이블 SELECT 문은 블럭킹을 당합니다.

이점 유념하시고 위 명령어들을 수행시에는 트랙잭션 타임을 최대한으로 줄여 수행하시기 바랍니다.
되도록이면 트랙잭션 모드에서는 수행안하는게 젤 좋겠죠 (autocommit 상태에서만 수행)


   

postgresdba.com