이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 13.3. 명시 적 스포츠 토토 결과 사이트 추천버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

12.3. 명시 적 스포츠 토토 결과

PostgreSQL다양한 제공 테이블의 데이터에 대한 동시 액세스를 제어하기위한 스포츠 토토 결과 모드. 이것들 모드는 응용 프로그램 제어 스포츠 토토 결과에 사용될 수 있습니다 상황MVCC그렇지 않습니다 원하는 행동을 제공하십시오. 또한, 대부분PostgreSQL명령은 자동으로 획득합니다 참조 된 테이블이 명령을하는 동안 호환되지 않는 방식으로 삭제하거나 수정되지 않음 실행. (예를 들어,Alter Table동일하게 다른 작업과 동시에 실행할 수 없습니다. 테이블.)

데이터베이스 서버, 사용pg_locks시스템보기 (섹션 41.33). 을 위한 스포츠 토토 결과 관리자 상태 모니터링에 대한 자세한 내용 서브 시스템, 참조PostgreSQL : 문서 : 8.0 : 토토 핫 활동 토토 핫.

12.3.1. 테이블 레벨 스포츠 토토 결과

아래 목록은 사용 가능한 스포츠 토토 결과 모드와 컨텍스트가 자동으로 사용되는 컨텍스트PostgreSQL. 당신은 또한 어떤 것도 획득 할 수 있습니다 이 스포츠 토토 결과은 명령으로 명시 적으로스포츠 토토 결과. 이 모든 스포츠 토토 결과 모드를 기억하십시오 이름에 단어가 포함되어 있어도 테이블 레벨 스포츠 토토 결과입니다"행"; 스포츠 토토 결과 모드의 이름 역사적입니다. 어느 정도까지 이름은 전형적인 것을 반영합니다 각 스포츠 토토 결과 모드의 사용 - 그러나 의미론은 모두 동일합니다. 하나의 스포츠 토토 결과 모드와 다른 스포츠 토토 결과 모드의 유일한 차이점은 각 충돌하는 스포츠 토토 결과 모드 세트. 둘 트랜잭션은 상충되는 모드의 스포츠 토토 결과을 동일하게 유지할 수 없습니다. 동시에 테이블. (그러나 거래는 결코 상충되지 않습니다 그 자체로. 예를 들어, 획득 할 수 있습니다액세스 독점스포츠 토토 결과 및 나중에 인수액세스 공유같은 테이블을 잠그십시오.) 비 분쇄 스포츠 토토 결과 모드는 많은 사람들에 의해 동시에 보관 될 수 있습니다 업무. 특히 일부 스포츠 토토 결과 모드가 있습니다 자체 분해 (예를 들어,액세스 독점적인스포츠 토토 결과은 둘 이상의 트랜잭션으로 유지할 수 없습니다 한 번에) 다른 사람들은 자기 분류가 아니지만 (예를 들어,액세스 공유스포츠 토토 결과을 잡을 수 있습니다 다중 거래). 일단 인수되면 스포츠 토토 결과이 끝날 때까지 고정됩니다 거래의.

테이블 레벨 스포츠 토토 결과 모드

액세스 공유

액세스 독점적인스포츠 토토 결과 모드 만.

명령selectand분석이것의 스포츠 토토 결과을 얻습니다 참조 테이블의 모드. 일반적으로 모든 쿼리 테이블 만 읽고 수정하지 않습니다. 이 스포츠 토토 결과 모드.

행 점수

독점and액세스 독점스포츠 토토 결과 모드.

the업데이트 선택명령 대상 테이블 에서이 모드의 스포츠 토토 결과을 얻습니다 ( 에 대한 추가액세스 공유스포츠 토토 결과 참조하지만 선택되지 않은 다른 테이블에서업데이트).

Row Exclusive

공유, 공유 ROW 독점, 독점액세스 독점적인스포츠 토토 결과 모드.

명령업데이트, 삭제삽입이 스포츠 토토 결과 모드를 획득하십시오 대상 테이블 (외에액세스 공유하다다른 참조 테이블의 스포츠 토토 결과). ~ 안에 일반적 으로이 스포츠 토토 결과 모드는 모든 명령에 의해 획득됩니다. 테이블의 데이터를 수정합니다.

공유 업데이트 독점

공유 업데이트 독점적인, 공유, 공유 ROW 독점, 독점액세스 독점적인스포츠 토토 결과 모드. 이 모드는 테이블을 보호합니다 동시 스키마 변경 및진공실행.

획득진공(full).

공유

행 독점적인, 공유 업데이트 독점적인, 공유 행 독점적인, 독점액세스 독점스포츠 토토 결과 모드. 이 모드는 동시 데이터로부터 테이블을 보호합니다 변화.

인수색인 생성.

공유 행 독점

행 독점적인, 공유 업데이트 독점적인, 공유, 공유 행 독점, 독점액세스 독점적인스포츠 토토 결과 모드.

이 스포츠 토토 결과 모드는 자동으로 획득되지 않습니다PostgreSQL명령.

독점

행 쉐어, Row Exclusive, 공유 업데이트 독점, 공유, 공유 행 독점적인, 독점액세스 독점스포츠 토토 결과 모드. 이 모드는 동시 만 허용액세스 공유스포츠 토토 결과, 즉 읽기 만 읽습니다 테이블은 거래와 병렬로 진행할 수 있습니다 이 스포츠 토토 결과 모드를 유지합니다.

이 스포츠 토토 결과 모드는 자동으로 획득되지 않습니다PostgreSQL명령.

액세스 독점

모든 모드의 스포츠 토토 결과과 충돌합니다 (액세스 공유, 행 공유하다, Row Exclusive, 공유 업데이트 독점, 공유, 공유 Row 독점, 독점, 그리고액세스 독점). 이 모드 보유자가 유일한 거래임을 보장합니다 어떤 식 으로든 테이블에 액세스합니다.

획득Alter Table, 드롭 테이블, reindex, 클러스터, 그리고진공 Full명령. 이것 또한의 기본 스포츠 토토 결과 모드입니다.스포츠 토토 결과 테이블지정하지 않는 진술 명시 적으로 모드.

팁 :액세스 독점적인스포츠 토토 결과 블록 Aselect(for 업데이트) 문.

12.3.2. 로우 레벨 스포츠 토토 결과

테이블 레벨 스포츠 토토 결과 외에도로드 레벨 스포츠 토토 결과 장치가 있습니다. 특정 행의 행 수준 스포츠 토토 결과 장치가 자동으로 획득됩니다. 행이 업데이트 된 경우 (또는 업데이트로 삭제 또는 표시). 그만큼 트랜잭션이 저지르거나 롤백 될 때까지 스포츠 토토 결과이 유지됩니다. 로우 레벨 스포츠 토토 결과은 데이터 쿼리에 영향을 미치지 않습니다. 그들은 차단같은 작가 열만. 없이 행에 줄 수준의 스포츠 토토 결과 장치를 얻으려면 실제로 행 수정,로 행을 선택하십시오.업데이트 선택. 한 번 특정 로우 레벨 스포츠 토토 결과이 취득되면 거래가 행을 업데이트 할 수 있습니다. 갈등에 대한 두려움없이 여러 번.

PostgreSQL기억하지 못합니다 메모리에서 수정 된 행에 대한 정보는 없습니다. 한 번에 잠긴 행 수에 대한 제한. 하지만, 행을 잠그면 디스크 쓰기가 발생할 수 있습니다. 예를 들어,업데이트 선택선택된 수정 표시하는 행을 표시하면 디스크가 쓰여집니다.

테이블 및 행 스포츠 토토 결과 외에도 페이지 수준 공유/독점 스포츠 토토 결과 장치는 읽기/쓰기 액세스를 제어하는 ​​데 사용됩니다 공유 버퍼 풀의 표 페이지. 이 자물쇠가 해제됩니다 행이 가져 오거나 업데이트 된 직후. 애플리케이션 개발자는 일반적으로 페이지 수준에 관심을 가질 필요가 없습니다 자물쇠이지만 우리는 완전성에 대해 언급합니다.

12.3.3. 교착 상태

명시 적 스포츠 토토 결과을 사용하면 가능성이 높아질 수 있습니다.교착 상태, 여기서 2 개 (또는 그 이상) 거래는 각각 다른 사람이 원하는 스포츠 토토 결과을 고정합니다. 예를 들어, 트랜잭션 1이 표 A에서 독점 스포츠 토토 결과을 획득 한 다음 표 B에서 독점적 인 스포츠 토토 결과을 취득하려고 시도하는 동안 트랜잭션 2는 이미 독점적 인 스포츠 토토 결과 테이블 B와 현재입니다 테이블 A에 독점적 인 스포츠 토토 결과을 원한다면 어느 쪽도 진행하다.postgresql교착 상태를 자동으로 감지하여 해결합니다 관련된 거래 중 하나를 중단하여 허용합니다 다른 완료. (정확히 어떤 거래가 될 것인지 낙태는 예측하기 어렵고 의존해서는 안됩니다. 에.)

교착 상태도 줄 수준 스포츠 토토 결과 장치 (따라서 명시 적으로도 발생할 수 있습니다. 스포츠 토토 결과이 사용되지 않습니다). 두 가지가있는 경우를 고려하십시오 동시 트랜잭션 테이블 수정. 첫 번째 거래 실행 :

업데이트 계정 세트 밸런스 = 밸런스 + 100.00 여기서 acctnum = 11111;

이것은 지정된 상태에서 행의 행 수준 스포츠 토토 결과을 얻습니다. 계정 번호. 그런 다음 두 번째 트랜잭션이 실행됩니다.

업데이트 계정 세트 밸런스 = 밸런스 + 100.00 여기서 acctnum = 22222;
계정 업데이트 설정 밸런스 = 밸런스 -100.00 여기서 acctnum = 11111;

첫 번째업데이트진술 지정된 행에서 로우 레벨 스포츠 토토 결과을 성공적으로 획득하므로 그 행을 업데이트하는 데 성공합니다. 그러나 두 번째22222_22230명령문은 행을 발견합니다 업데이트를 시도하는 것이 이미 잠겨 있으므로 기다립니다. 완료하기 위해 스포츠 토토 결과을 취득한 거래의 경우. 거래 2가 이제 거래 1을 완료하기 위해 기다리고 있습니다. 계속 실행되기 전에. 이제 거래 1 실행 :

업데이트 계정 설정 밸런스 = 밸런스 -100.00 여기서 acctnum = 22222;

거래 트랜잭션 1에 대한로드 레벨 스포츠 토토 결과을 얻으려고 시도합니다. 지정된 행, 그러나 할 수는 없습니다 : 트랜잭션은 이미 보유하고 있습니다 그런 자물쇠. 따라서 거래 2가 완료되기를 기다립니다. 따라서, 거래 1은 거래 2와 거래에 차단됩니다 트랜잭션 1에서 두 개가 차단됩니다 : 교착 상태 조건.PostgreSQL이것을 감지합니다 상황과 거래 중 하나를 중단합니다.

교착 상태에 대한 최선의 방어는 일반적으로 피하는 것입니다 데이터베이스를 사용하는 모든 응용 프로그램이 일관된 순서로 여러 객체의 스포츠 토토 결과 장치를 얻습니다. 에서 위의 예, 두 거래가 모두 행을 업데이트 한 경우 같은 순서, 교착 상태가 발생하지 않았을 것입니다. 하나도해야합니다 객체에서 최초의 스포츠 토토 결과 장치가 트랜잭션은이를 위해 필요한 최고 모드입니다. 물체. 미리 확인하는 것이 불가능하다면 교착 상태는 거래를 다시 시도하여 날아가는 것으로 처리 될 수 있습니다 교착 상태로 인해 중단됩니다.

교착 상태 상황이 감지되지 않는 한 거래 테이블 레벨 또는 로우 레벨 스포츠 토토 결과을 찾는 것이 기다립니다 충돌하는 자물쇠가 릴리스되기 위해 무기한. 이것은 의미합니다 애플리케이션이 거래를 개방하는 것은 나쁜 생각입니다. 장기간 (예 : 사용자 입력을 기다리는 동안).