>  기사  >  데이터 베이스  >  어떤 상황에서 mysql이 교착 상태에 빠지나요?

어떤 상황에서 mysql이 교착 상태에 빠지나요?

(*-*)浩
(*-*)浩원래의
2019-05-08 11:07:063923검색

MySQL의 Deadlock: 두 개 이상의 프로세스가 실행 중 리소스 경쟁으로 인해 서로 기다리는 현상을 말합니다. 이 때 시스템이 발전할 수 없습니다. 교착 상태에 있거나 시스템에 교착 상태가 있는 경우 항상 서로를 기다리는 프로세스를 교착 상태 프로세스라고 합니다. 테이블 수준 잠금은 교착 상태를 유발하지 않습니다. 따라서 교착 상태 해결은 주로 가장 일반적으로 사용되는 InnoDB에 중점을 둡니다.

추천 과정: MySQL 튜토리얼.

어떤 상황에서 mysql이 교착 상태에 빠지나요?

교착 상태의 핵심은 두 개 이상의 세션이 잠기는 순서가 일관되지 않는다는 것입니다.

그러면 교착 상태 문제를 해결하는 열쇠는 다음과 같습니다: 서로 다른 세션을 순서대로 잠그는 것

사례

요구 사항: 투자금을 여러 부분으로 나누어 차용자에게 무작위로 분배합니다.

비즈니스 프로그램의 초기 아이디어는 다음과 같습니다.

투자자가 투자한 후 금액을 무작위로 여러 부분으로 나눈 다음 차용자 테이블에서 무작위로 몇 개를 선택한 다음 선택을 통해 차용자 테이블을 업데이트합니다. 내부 잔액 등을 업데이트합니다.

예를 들어 두 명의 사용자가 동시에 투자하는 경우 사용자 A의 금액을 무작위로 2개로 나누어 차용자 1, 2에게 할당합니다. 잠금 순서도 다르며 당연히 교착 상태가 빨리 나타납니다.

이 문제에 대한 개선 방법은 매우 간단합니다. 할당된 모든 차용자를 한 번에 잠그면 됩니다.

업데이트를 위해 (xx,xx,xx)의 id가 있는 xxx에서 *를 선택하세요

mysql의 목록 값은 자동으로 작은 것부터 큰 것까지 정렬되며 잠금도 작은 것부터 큰 것까지 하나씩 추가됩니다. 크다

으으으으

위 내용은 어떤 상황에서 mysql이 교착 상태에 빠지나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.