사설 토토 [표]이름[, ...] 사설 토토 [표]이름[, ...] inLockmode모드 어디Lockmode중 하나입니다. 액세스 공유 | 줄 공유 | Row Exclusive | 공유 업데이트 독점 | 공유 | Row Exclusive 공유 | 독점 | 액세스 독점
기존의 이름 (선택적으로 스키마 자격) 사설 토토 테이블.
이것은 가장 제한적인 사설 토토 모드입니다. 충돌합니다 액세스 독점 모드 만으로만. 보호에 사용됩니다 Concurrent에 의해 수정 된 테이블Alter Table, 드롭 테이블and진공 Full명령.
참고 :theselect명령은 참조 에서이 모드의 사설 토토을 얻습니다 테이블. 일반적으로 테이블 만 읽는 쿼리 이 사설 토토 장치를 획득 할 수는 없습니다 방법.
독점 및 액세스 독점 사설 토토과 충돌합니다 모드.
참고 :the선택을 선택하십시오 업데이트명령은이 모드의 사설 토토을 획득합니다 대상 테이블 (들) (액세스 공유다른 테이블의 사설 토토 참조되지만 선택되지 않은
업데이트
).
공유와의 충돌, 공유 Row 독점, 독점 그리고 독점 모드에 액세스하십시오.
참고 :명령업데이트, 삭제및삽입이 사설 토토 모드를 획득하십시오 대상 테이블 (외에액세스 공유다른 사람의 사설 토토 참조 테이블). 일반적 으로이 사설 토토 모드는됩니다 데이터를 수정하는 모든 쿼리에 의해 획득됩니다. 테이블.
Share Update 독점, 공유, 공유와 충돌합니다 Row 독점, 독점 및 액세스 독점 모드. 이것 모드는 동시 스키마 변경으로부터 테이블을 보호합니다 그리고진공runs.
참고 :획득진공(
Full
).
ROW 독점과 충돌, 공유 업데이트 독점, 독점 Row 독점, 독점 및 액세스 독점 공유 모드. 이 모드는 동시 데이터로부터 테이블을 보호합니다 변화.
참고 :획득색인 생성.
Row 독점과 충돌하고, 독점 공유, 독점 공유, 공유, Row 독점, 독점 및 액세스를 공유하십시오 독점 모드.
참고 :이 사설 토토 모드는 자동으로 없습니다 어떤 것에 의해 획득PostgreSQL명령.
행 공유, 행 독점, 공유 업데이트와 충돌합니다 배타적, 공유, 공유 행 독점, 독점 및 독점 모드에 액세스하십시오. 이 모드는 동시 만 허용합니다 액세스 공유, 즉 테이블에서만 읽는 것만 진행할 수 있습니다. 이 사설 토토 장치를 보유한 트랜잭션과 병렬로 방법.
참고 :이 사설 토토 모드는 자동으로 없습니다 어떤 것에 의해 획득postgresql명령.
모든 사설 토토 모드와 충돌합니다. 이 모드는 보장합니다 보유자가 액세스하는 유일한 거래입니다 어떤 식 으로든 테이블.
참고 :획득ALTER 테이블, 드롭 테이블및진공 Full진술. 이것 또한의 기본 사설 토토 모드입니다.사설 토토 테이블그렇지 않은 진술 모드를 명시 적으로 지정합니다.
사설 토토 테이블테이블 레벨을 얻습니다 자물쇠, 충돌하는 자물쇠가 필요한 경우 대기 출시된. 일단 얻어지면 자물쇠는 나머지 부분에 대해 고정됩니다. 현재 거래. (없음사설 토토 해제 테이블명령; 자물쇠는 항상 트랜잭션에서 해제됩니다 끝.)
그 참조 명령에 대해 사설 토토을 자동으로 획득 할 때 테이블,PostgreSQL항상 사용합니다 최소 제한적인 사설 토토 모드가 가능합니다.사설 토토 테이블필요한 경우 사례를 제공합니다 더 제한적인 사설 토토.
예를 들어, 응용 프로그램이 읽기시 거래를 실행한다고 가정합니다. 헌신적 인 격리 수준과 트랜잭션 기간 동안 표는 안정적으로 유지됩니다. 에게 이를 달성하여 테이블을 통해 공유 사설 토토 모드를 얻을 수 있습니다. 쿼리 전에. 이렇게하면 동시 데이터 변경을 방지합니다 테이블의 후속 읽기 확인 안정적인 견해를 참조하십시오. 공유 사설 토토 모드가 행과 충돌하기 때문에 커밋 된 데이터 작가가 획득 한 독점적 인 사설 토토 및사설 토토 테이블이름in 공유 모드진술은 동시 소지자까지 기다립니다 행 독점 모드 커밋 또는 롤백. 따라서 일단 얻으면 자물쇠는 헌신적 인 글이 없다. 또한 사설 토토 장치를 해제 할 때까지 시작할 수 없습니다.
참고 :a 직렬화 가능한 분리 수준에서의 거래 실행사설 토토 테이블진술 실행하기 전에DML진술. 직렬화 가능한 트랜잭션의 데이터 관점이 될 것입니다 첫 번째 일 때 냉동DML진술이 시작됩니다. 나중에사설 토토의지 여전히 동시 기록을 방지합니다. 트랜잭션이 읽는 내용은 최신에 해당합니다 헌신적 인 가치.
이런 종류의 트랜잭션이 데이터를 변경하는 경우 테이블, 그러면 Share Row 독점 사설 토토 모드를 사용해야합니다. 공유 모드 대신. 이것은 하나의 거래 만 보장합니다 이 유형은 한 번에 실행됩니다. 이 없으면 교착 상태가 가능합니다. 두 거래가 주식 모드를 획득 한 다음 실제로 수행 할 Row 독점 모드를 획득 할 수 없습니다. 그들의 업데이트. (트랜잭션 자체 자물쇠는 결코 결코 없습니다 충돌이므로 거래는 ROW 독점 모드를 얻을 수 있습니다. 공유 모드를 보유하고 있지만 다른 사람이 공유를 보유하고 있다면 그렇지 않습니다. 방법.)
교착 상태를 방지하기 위해 두 가지 일반 규칙을 따를 수 있습니다 정황:
트랜잭션은 동일한 오브젝트에 대한 사설 토토 장치를 획득해야합니다. 같은 순서.
예를 들어, 하나의 응용 프로그램이 R1 이상을 업데이트하는 경우 R2 행 (동일한 거래에서)을 업데이트 한 다음 두 번째. 업데이트하려면 응용 프로그램이 R2를 업데이트해서는 안됩니다. R1 행 후 (단일 트랜잭션). 대신, 그것은해야합니다 첫 번째 순서로 R1 및 R2를 업데이트합니다. 애플리케이션.
단일 객체에 여러 개의 사설 토토 모드가 참여한 경우 그런 다음 거래는 항상 가장 제한적인 것을 취득해야합니다 먼저 모드.
이 규칙의 예는 이전에 언제든지 주어졌습니다 Share Row 독점 모드 사용에 대해 논의 공유 모드.
PostgreSQL감지 교착 상태 및 롤백은 적어도 하나의 대기 거래 거래 교착 상태를 해결하십시오. 코딩하는 것이 실용적이지 않은 경우 위의 규칙을 엄격히 따르는 응용 프로그램, 대안 솔루션은 거래 할 때 거래를 다시 시도 할 준비를해야합니다. 교착 상태에 의해 낙태.
여러 테이블을 잠그면 명령사설 토토 A, B;사설 토토 a; 사설 토토 B;. 테이블은 하나만으로 잠겨 있습니다 에 명시된 순서로사설 토토명령.
사설 토토 ... 액세스 공유 모드요구select대상 테이블. 다른 모든 형태의사설 토토요구업데이트및/또는삭제특권.
사설 토토a 내부에서만 유용합니다 트랜잭션 블록 (시작...커밋), 사설 토토이 빨리 떨어지므로 거래가 끝납니다. 에이사설 토토명령 트랜잭션 블록 외부에 나타나면 자체 포함됩니다 트랜잭션이므로 사설 토토 장치가 그대로 떨어질 것입니다. 획득.
RDBMS사설 토토을 사용합니다 다음 표준 용어 :
독점적 인 사설 토토은 다른 사설 토토 장치를 방지합니다 부여되는 유형.
공유 사설 토토 사설 토토 장치는 다른 사람도 같은 유형을 보유 할 수 있습니다. 사설 토토 장치이지만 해당 독점 사설 토토을 방지합니다 부여 된 것.
사설 토토 테이블 스키마.
개별 행 사설 토토.
postgresql따르지 않습니다 이 용어는 정확히.사설 토토 테이블테이블 레벨 사설 토토 만 처리하므로 모드 이름 행을 참여시키는 것은 모두 잘못된 이름입니다. 이 모드 이름은해야합니다 일반적으로 사용자의 의도를 나타내는대로 읽습니다. 잠긴 테이블 내에서 로우 레벨 사설 토토을 얻습니다. 또한, 행 독점 모드는이 이름 지정 규칙을 따르지 않습니다 정확하게는 공유 가능한 테이블 사설 토토 장치이므로. 명심하십시오 모든 사설 토토 모드는와 동일한 의미론을 가지고 있습니다.사설 토토 테이블다르고 다릅니다 어떤 모드가 어느 모드와 충돌하는지에 대한 규칙에서만.
갈 때 기본 키 테이블에서 공유 사설 토토을 얻습니다. 외국 키 테이블에 인서트를 수행합니다.
작업 시작; 공유 모드의 사설 토토 테이블 필름; 필름에서 ID를 선택하십시오 여기서 name = '스타 워즈 : 에피소드 I- 팬텀 메나 스'; - 레코드가 반환되지 않은 경우 롤백을하십시오 films_user_comments 값에 삽입하십시오 (_id_, '좋아요! 너무 오래 기다리고있었습니다!'); 일을 커밋;
기본 키 테이블에서 공유 행 독점 사설 토토을 가져 가면 삭제 작업 수행 :
작업 시작; 공유 행 독점 모드의 사설 토토 테이블 필름; id가있는 Films_user_comments에서 삭제하십시오 (등급 <5 인 필름에서 ID를 선택); 등급 <5 인 필름에서 삭제; 일을 커밋;
없음사설 토토 테이블inSQL92대신 사용트랜잭션 설정동시성을 지정합니다 거래 수준. 우리는 그것을지지합니다. 보다트랜잭션 설정세부.
액세스 공유, 액세스 독점 및 공유 업데이트를 제외하고 독점 사설 토토 모드,PostgreSQL사설 토토 모드 및사설 토토 테이블구문은 그것과 호환됩니다 참석Oracle(TM).