최근 ASP.NET 응용 프로그램 중 하나에 데이터베이스 교착 상태 오류가 표시되어 오류를 확인하고 수정하라는 요청을 받았습니다. 교착 상태의 원인은 커서 내에서 테이블을 엄격하게 업데이트하는 저장 프로 시저였습니다.
이 오류를 처음으로보고 효과적으로 추적하고 수정하는 방법을 몰랐습니다. 내가 아는 가능한 모든 방법을 시도하고 마침내 업데이트되는 테이블에 기본 키가 없음을 발견했습니다! 운 좋게도 그것은 열이었다.
나중에 배포 엉망으로 데이터베이스를 스크립팅 한 개발자를 찾았습니다. 기본 키를 추가했는데 문제가 해결되었습니다.
나는 행복을 느꼈고 내 프로젝트로 돌아 왔고 그 교착 상태의 이유를 알아 내기 위해 약간의 연구를했습니다 ...
교착 상태의 원인은 순환 대기 조건 인 것 같습니다. 기본 키보다 기본 키없이 업데이트가 더 오래 걸립니다.
잘 정의 된 결론이 아니라는 것을 알고 있으므로 여기에 게시하고 있습니다 ...
- 누락 된 기본 키가 문제입니까?
- (상대 제외, 보류 및 대기, 선점 및 순환 대기 없음) 이외의 교착 상태를 유발하는 다른 조건이 있습니까?
- 교착 상태를 방지하고 추적하려면 어떻게합니까?