잠시만 기다려 주세요


 
HOME   |  여기는?   |  바다물때표   |  여러가지 팁 (757)  |  추천 및 재미 (15)  |  자료실 (16)  |  끄적거림 (414)  |  시나리오 (757)  |  드라마 대본 (248)  |  

2019년 03월 21일
담배를 끊으면 그 돈으로 좋은 일들을 할 수 있으며 건강도 덤으로 얻게 된다. - 바다아이
 

    DATABASE

DATABASE - postgresql table lock 테이블 락, 잠금, 트랜잭션
이 름 : 바다아이   |   조회수 : 1618         짧은 주소 : https://www.bada-ie.com/su/?271523064199

기본적인 사용법은 다음과 같다.

BEGIN WORK;
LOCK TABLE table_name IN ACCESS EXCLUSIVE MODE;
SELECT * FROM table_name WHERE id=10;
Update table_name SET field1=test WHERE id=10;
COMMIT WORK;


unlock table 명령은 없습니다. 잠금은 항상 트랜잭션 끝에서 자동 해제됩니다.
 

ACCESS SHARE

ACCESS EXCLUSIVE 락 모드와 충돌이 난다. SELECT 와 ANALYZE 명령어가 사용될때 이 잠금 모드가 사용된다. 일반적으로 오직 읽기를 수행하거나, 갱신이 없는 명령어를 수행할때는 이 모드를 획득한다고 보면 된다.

ROW SHARE

EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. SELECT FOR UPDATE 명령시에 타겟이 되는 테이블에 이 잠금 모드가 설정된다.

ROW EXCLUSIVE

SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. UPDATE, DELETE, INSERT 명령어가 수행될때 타겟 테이블에 이 잠금 모드가 설정된다. 일반적으로 테이블의 데이터를 갱신하는 명령어들이 수행될 때 이 모드가 설정된다고 생각하면 된다.

SHARE UPDATE EXCLUSIVE

SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. 이 모드는 동시에 테이블 스키마의 변경이나, VACUUM (FULL 제외) 실행시에 설정되며 테이블을 보호해준다.

SHARE

ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. 동시에 테이블의 데이터가 변경되지 않도록 테이블을 보호한다. CREATE INDEX 명령 수행시 설정되는 모드이다.

SHARE ROW EXCLUSIVE

ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. 이 모드는 PostgreSQL 명령어로는 자동적으로 설정되지 않는다. 즉 사용자가 명시적으로 선언하여야 한다.

EXCLUSIVE

ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE 모드와 충돌이 난다. 이 모드는 동시에 ACCESS SHARE 잠금만 허용하도록 한다. 바꾸어 말하면, 이 모드에서는 오직 읽기 트랜잭션만 동시에 수행 될 수 있다는 뜻이다. SHARE ROW EXCLUSIVE 모드와 마찬가지로 PostgreSQL 명령어로는 자동설정 되지 않고, 명시적으로 잠금을 설정하여야 한다.

ACCESS EXCLUSIVE

ACCESS EXCLUSIVE 모드를 포함하여 모든 잠금 모드와 충돌이 난다. 가장 엄격한 잠금 모드로서 이 모드로 잠금이 설정되어 동작중인 트랜잭션만 테이블에 접근을 할 수 있다. ALTER TABLE, DROP TABLE, REINDEX, CLUSTER, VACUUM FULL 명령어 수행시 설정된다. 만약 명시적 잠금을 사용하기 위해 LOCK 명령을 사용할 경우 아무런 옵션도 주지 않고 실행 한다면 기본적으로 이 모드가 설정된다는 것을 알아 두자.



주의)

lock 강하게 걸고 비정상 종료로 커밋이나 롤백 없게 되면 테이블 접근이 안됩니다.
postgresql 재시작하거나 pid 찾아서 해제해 주어야 합니다.
그러니까 프로그램 하실 때... 어떤 에러 상황에서든 롤백이나 커밋 둘중에 하나는 하게 만드셔야 합니다.


출처 : http://kh2ya.tistory.com/93
 
| |


      1 page / 3 page
번 호 카테고리 제 목 이름 조회수
72 DATABASE db .. dbeaver, db admin tool 바다아이 137
71 DATABASE postgresql SEQUENCE reset .... 바다아이 258
70 DATABASE mysql, mariadb , , , , left, substring, right, concat 바다아이 575
69 DATABASE [PostgreSql] WITH , , Operator 바다아이 352
68 DATABASE postgresql for, foreach , 바다아이 366
67 DATABASE postgresql , , into ... 바다아이 348
66 DATABASE postgresql PL/pgSQL - SQL Procedural Language, , 바다아이 1506
65 DATABASE postgresql ... .. 바다아이 420
64 DATABASE postgresql CSV export/import 바다아이 477
63 DATABASE postgresql tablespace , .... 바다아이 525
62 DATABASE postgresql 10 partitioning, ... , ... 바다아이 399
61 DATABASE Using PostgreSQL Arrays, ... ... 바다아이 449
60 DATABASE PostgreSQL (TRIGGER) (function) 바다아이 444
59 DATABASE mysql, mariadb DISTINCT GROUP BY 바다아이 424
58 DATABASE Optimize and Improve PostgreSQL Performance with VACUUM, ANALYZE, and REINDEX 바다아이 444
57 DATABASE postgresql tuple . vacuumdb .. , . 바다아이 457
56 DATABASE RDBMS SQL MONGODB ... 바다아이 425
55 DATABASE mysql 5.x my.cnf 바다아이 609
54 DATABASE postgresql , .. 바다아이 635
53 DATABASE postgresql , size, 바다아이 755
52 DATABASE postgresql , , .... 바다아이 610
51 DATABASE PostgreSQL Replication, , , master, slave 바다아이 740
50 DATABASE postgresql case 바다아이 651
49 DATABASE postgresql with 바다아이 595
48 DATABASE postgresql , , string 바다아이 714
47 DATABASE / SELECT , 바다아이 660
46 DATABASE Postgresql partitioning table , , , 바다아이 723
45 DATABASE PostgreSQL 바다아이 842
44 DATABASE postgresql vacuumdb, psql, pg_dump password crontab 바다아이 923
43 DATABASE postgresql sequence 퀀 auto_increment . 바다아이 1346
| |






Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ FreeBSD + GoLang + PostgreSQL ]
서버위치 : New Jersey  실행시간 : 0.04762
to webmaster... gogo sea. gogo sea.