찾다

 >  Q&A  >  본문

교착 상태가 발생할 때 프로그램을 재귀적으로 호출하는 방법은 무엇입니까?

<p>내 작업 "저장 프로시저"는 밤새 실행됩니다. 때때로 나는 막히게됩니다. 교착 상태가 발견되면 15분 후에 동일한 프로세스를 최대 3번 실행하는 코드를 작성하고 싶습니다. </p> <p>지금이 오전 10시라고 가정해 보겠습니다. 그런 다음 오전 10시에 실행하고 교착 상태가 발견되면 오전 10시 15분에 작업을 다시 호출한 다음 오전 10시 30분에 "교착 상태인 경우", 오전 10시 45분에 "교착 상태인 경우"를 호출합니다. 마지막 실행이 교착 상태에 빠지면 작업을 완전히 종료합니다. </p> <p>저는 이렇게 했습니다. </p> <pre class="brush:php;toolbar:false;">DECLARE totalTrys INT DEFAULT 0; SQLEXCEPTION에 대한 종료 핸들러 선언 시작하다 진단 조건 1 받기 @err_num = MYSQL_ERRNO; if(@err_num = 1213 AND totalTrys < 4) THEN SET 총Trys = 총Trys + 1; 수면 선택(900); 전화 Guardi.prod_update_guardi_accounts(); 종료하면; END;</pre> <p>이것이 효율적인 접근 방식인가요? 교착상태를 제거하는 것 외에 더 좋은 방법이 있습니까? </p>
P粉060112396P粉060112396471일 전525

모든 응답(1)나는 대답할 것이다

  • P粉649990163

    P粉6499901632023-08-31 15:04:19

    모든 것을 진행 상태로 유지합니다. 그러면 이 동작과 관련된 모든 코드가 한 곳에 있습니다. 또한: 교착 상태가 계속되는 대신 CALL 문 실행을 따르지 않습니까? 계속 진행하면 문제가 해결되었을 수 있으며 아무것도 기다리지 않을 것입니다. 또한 교착 상태 이후의 트랜잭션은 교착 상태가 해결된 후에만 실행됩니다.

    귀하의 코드에 대한 나의 접근 방식은 다음과 같습니다.

    으아악

    이것을 테스트해야 합니다. 테스트되지 않았으므로 오타가 불가능하지 않습니다.

    회신하다
    0
  • 취소회신하다