잠금 테이블을 갱신 커밋되지 않은 납

업데이트 선택은 테이블의 불일치를 유발, 또는 삭제 작업, 테이블 삽입에 다른 사용자를 방지 수정하는 쿼리의 시간 순서입니다.

시나리오 :

언제 업데이트를 사용해야합니까? 즉, 비즈니스 수준의 데이터 독점을 필요로 업데이트 사용을 고려하는 사람들이다. 현장에 이러한 티켓 예약 등, 우표가 화면에 표시 할 때 실제 티켓을 수행하는 동안, 필요성이 데이터가 다른 클라이언트에 의해 수정되지 않은 것을 다시 정의합니다. 따라서이 확인 과정에서 업데이트를 사용할 수 있습니다. 이 프로그램은 문제에 대한 통합 솔루션으로, 초기 준비해야합니다.

우리가 업데이트 작업을 수행 할 때 큰 차이가 일반적인 선택합니다. 일반적으로 선택 데이터가 다중 버전 읽기 일관성 속성의 이전 버전을 읽을 잠겨 있는지 여부를 고려할 필요가 없습니다. 업데이트를 추가 한 후, 오라클은 새로운 트랜잭션을 시작하여 데이터를 잠금을 시도해야합니다. 현재이 고정 된 경우, 기본 동작은 피할 수 기다리는 차단하는 것입니다. 사용 역할 NOWAIT 절은 잠금이 직접 발표 오류를 반환하지 않는 경우 리소스가 잠겨있을 때, 검색 요청을 대기를 방지하는 것입니다.
일상 생활에서 우리는 갱신에 사용 특히 PL / SQL 개발자가 수동으로 데이터를 수정하는 등의 매우 일반적입니다. 이 때, 그냥 편리 찾을 이해의 업데이트 부족에 대한 진정한 의미 동안.
업데이트 문을 위해 오라클의 수준과 범위를 향상시킬 수있는 수동 잠금의 특별한 경우이다. 오라클의 잠금 메커니즘은 상대적으로 좋은에서 데이터베이스 잠금 메커니즘의 다양한 유형이다. 따라서, 오라클은 일반 사용자 및 애플리케이션 제어 및 직접 리프트 잠금을 고려할 필요가 없습니다. 심지어 이러한 교착 상태 시나리오의 대부분을 수동으로 해제 잠금 관련 잠금 관련 문제를 나타납니다 생각합니다. 따라서, 오라클은 매일 사용하는 개발과 같은 업데이트하지 않는 것이 좋습니다. 또한, 통상의 개발과 운영 및 유지 보수,하지만 제출 업데이트 사용 잊고, 그것은 테이블 잠금 오류가 많이 발생합니다.

몇 가지 예 :
업데이트 행 잠금 t에서 선택 * 후 릴리스, 반환 쿼리 결과를 기다립니다. 이것은 일반적으로 잠금을 해제합니다, 제출 후 기다립니다.
잠금을 해제하기 위해 라인을 기다리지 않습니다 NOWAIT 업데이트 t에서 * 선택, 잠금 프롬프트 충돌, 결과를 반환하지 않는
여행이 아직 잠금, 잠금 프롬프트 충돌을 발표하지 않은 경우 결과는 반환하지 않습니다, 업데이트 대기 5 대기 5 초 동안 t SELECT * FROM
SELECT * FROM 업데이트에 대한 t 쿼리 반환 쿼리 결과를 잠겨 있지만 레코드 행 잠금 무시 건너 뛰기 

로 다음되는 UPDATE 문 구문에 대한 ... SELECT를 : 
  SELECT가 ... [경우 column_list] 업데이트 [n 개의-WAIT | NOWAIT] [SKIP이 잠겨] 
하는 : 
  절 지정의 칼럼 라인에 해당 타깃의 특정 열을 갱신한다. 
  다른 사용자가 초 단위의 잠금을 해제하기 위해 무기한 대기를 방지하기 위해 WAIT 절 지정 기다립니다.

장점 "사용에 대한 업데이트 WAIT"절은 다음과 같다 : 
  (1)가 무기한 잠긴 행 대기 방지; 
  2가 더 제어 대기 시간 잠금 장치의 응용 프로그램을 할 수 있습니다.
  대화 형 애플리케이션을위한 매우 유용한 3, 사용자가 이러한 불확실한 기다릴 수 없기 때문에 
  당신이 건너가 잠겨 사용하는 경우 4, 잠금이 선을 교차 할 수는 대기 N '자원 바쁜'예외보고에 의해 트리거보고하지 않습니다

 

 

 

 

원본 주소 : HTTPS : //www.cnblogs.com/xiyubaby/p/4623516.html

추천

출처www.cnblogs.com/cuitang/p/12171119.html