Search

10-3-5. 매뉴얼 커밋과 베큠

-- [SQL-10-3-5-a]: Oracle에서 아래 SQL을 실행했다고 가정 UPDATE startdbora.tr_ord_vac t1 SET ord_amt = 0 -- WHERE ord_no = 10;
SQL
복사
-- [SQL-10-3-5-b] A 세션 -- A 세션은 매뉴얼 커밋으로 변경 -- DBeaver 메뉴로 매뉴얼 커밋 모드로 변경 -- 데이터베이스>트랜잭션모드>Manual Commit -- 1. 매뉴얼 커밋에서 tr_ord_vac를 조회 SELECT * FROM startdbpg.tr_ord_vac t1 WHERE t1.ord_no = 10; -- 7. COMMIT COMMIT; -- B 세션은 오토 커밋을 유지
SQL
복사
-- [SQL-10-3-5-b] B 세션 -- B 세션은 오토 커밋을 유지 -- 2. 1,000건 UPDATE(데드 튜플 1,000개 생성) UPDATE startdbpg.tr_ord_vac t1 SET ord_st = t1.ord_st WHERE t1.ord_no <= 1000; -- 3. 데드 튜플 확인(n_dead_tup = 1000) SELECT t1.n_dead_tup ,t1.n_live_tup FROM pg_stat_user_tables t1 WHERE t1.relid = 'startdbpg.tr_ord_vac'::regclass; -- 4. 베큠 수행(VERBOSE로 상세 정보 출력) VACUUM VERBOSE startdbpg.tr_ord_vac; -- 5. 다시 데드 튜플 확인(n_dead_tup이 그대로 1,000) SELECT t1.n_dead_tup ,t1.n_live_tup FROM pg_stat_user_tables t1 WHERE t1.relid = 'startdbpg.tr_ord_vac'::regclass; -- 6. tr_ord_vac에 락을 잡고 있는 pid 확인 SELECT t1.locktype, t1.pid FROM pg_locks t1 WHERE t1.relation = 'startdbpg.tr_ord_vac'::regclass;
SQL
복사