拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
신청 시나리오는 다음과 같습니다.
유저 밸런스를 수정하기 전, 수정에 문제가 생길까 봐 실수로 유저 밸런스를 0 등으로 변경했습니다. 대신, 먼저 사용자 계정 변경 테이블에 레코드를 삽입한 다음 계정 변경 테이블에서 데이터를 검색하여 사용자 잔액 필드를 업데이트하도록 선택하세요.
이 행동을 표현하려면 "두려워하고 올바른 길을 선택하지 않는 것"이라는 관용어를 사용하세요.
사용자 잔액을 수정할 때 문제가 걱정되니 사용자 계정 변경 테이블을 삽입할 때도 문제가 발생하는지 걱정해야 한다고 생각한 적이 있나요? 계정 변경 테이블을 보장하기 위해 다른 테이블이 필요합니까? 다른 시계는 누가 보증하나요?
사실 올바른 해결책을 알고 있어야 합니다. 안전하지 않은 두 가지 방법을 사용하는 대신 하나의 안전한 방법을 만듭니다. 이렇게 하면 안전한 메서드를 얻지 못했을 뿐만 아니라 안전하지 않은 메서드 두 개를 얻게 되었습니다.
올바른 방법은 사용자 대차대조표를 직접 수정하고 전용 잠금 장치를 추가하는 것입니다. 예:
데이터 손실이 발생할지는 모르겠지만 멀티 스레드 동시성의 경우 나중에 데이터가 이전 데이터를 덮어쓸 가능성이 매우 높습니다. 테이블을 먼저 삽입하면 여러 스레드에서 작동하지 않습니다.
따라서 작성자는 mysql의 트랜잭션 기능을 활성화하는 것이 좋습니다. 자세한 내용은 이 질문을 읽어보세요
https://segmentfault.com/q/10...
신청 시나리오는 다음과 같습니다.
이 행동을 표현하려면 "두려워하고 올바른 길을 선택하지 않는 것"이라는 관용어를 사용하세요.
사용자 잔액을 수정할 때 문제가 걱정되니 사용자 계정 변경 테이블을 삽입할 때도 문제가 발생하는지 걱정해야 한다고 생각한 적이 있나요? 계정 변경 테이블을 보장하기 위해 다른 테이블이 필요합니까? 다른 시계는 누가 보증하나요?
사실 올바른 해결책을 알고 있어야 합니다. 안전하지 않은 두 가지 방법을 사용하는 대신 하나의 안전한 방법을 만듭니다. 이렇게 하면 안전한 메서드를 얻지 못했을 뿐만 아니라 안전하지 않은 메서드 두 개를 얻게 되었습니다.
올바른 방법은 사용자 대차대조표를 직접 수정하고 전용 잠금 장치를 추가하는 것입니다. 예:
으아악데이터 손실이 발생할지는 모르겠지만 멀티 스레드 동시성의 경우 나중에 데이터가 이전 데이터를 덮어쓸 가능성이 매우 높습니다. 테이블을 먼저 삽입하면 여러 스레드에서 작동하지 않습니다.
따라서 작성자는 mysql의 트랜잭션 기능을 활성화하는 것이 좋습니다. 자세한 내용은 이 질문을 읽어보세요
https://segmentfault.com/q/10...