php - mysql 데이터 쿼리와 변경이 동시에 발생할 수 있습니까?
大家讲道理
大家讲道理 2017-05-16 13:04:36
0
5
466

동시처리(여기서의 동시성은 작은 동시성, 즉 여러 사람의 동시성)를 하고 싶기 때문에 백그라운드 관리자는 상환 데이터를 여러 관리자가 동시에 하나의 작업으로 운영하는 것을 방지하기 위해 운영합니다. 모르고 환불했는데 오류가 발생했습니다.

내 접근 방식은 테이블에 lock_time 필드를 추가하고 lock_time이 0인 데이터를 쿼리하는 것입니다. 쿼리한 후 lock_time을 현재 시간으로 변경합니다(업데이트하는 동안 where 조건으로 lock_time=0을 추가했습니다).

질문: 이렇게 하면 동시성이 발생하나요?

즉, 이상적인 환경에서는 두 사람이 동시에 데이터 조각을 쿼리할 수 있습니다(1분 또는 1초 내에 '동시에' 쿼리).

마찬가지로, 두 사람이 동시에 데이터 조각의 특정 필드를 변경하는 것이 가능합니까(1분 또는 1초 내에 "동시에" 변경됨),

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(5)
为情所困

귀하의 질문에 대한 답변은 전적으로 가능합니다. 이러한 문제를 피하려면 새 필드를 사용하는 대신 잠금 및 트랜잭션을 사용해야 합니다

滿天的星座

Baidu innodb 잠금이면 충분합니다.

黄舟

낙관적 잠금의 개념을 살펴볼 수 있습니다. 버전 번호 필드를 추가하면 데이터를 읽을 때 무시할 수 있고, 데이터 업데이트 시 버전 번호를 확인하고 버전 번호를 업데이트할 수 있습니다. 버전 번호와 lock_time의 차이점은 lock_time이 충분히 정확하지 않으면 중복이 발생할 수 있다는 점입니다. 버전 번호는 항상 +1이며 버전 중복 문제는 없습니다

小葫芦

자물쇠와 사물은 귀하의 요구 사항을 충족할 수 있어야 합니다. Mysql의 두 가지 개념을 자세히 살펴보겠습니다.

我想大声告诉你

귀하의 아이디어는 낙관적 잠금에 가깝습니다. 확인을 위해 lock_time을 타임스탬프로 변경하세요. 발견된 타임스탬프를 수정한 타임스탬프와 비교한 후 제출하세요. 소규모 동시성을 위해서는 InnoDB의 행 잠금을 사용하는 것도 가능하며 기본적으로 성능상의 어려움은 없습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿