2017-05-19 8 views
0

온라인 투표 절차부터 한 번에 많은 사람이 같은 사람을 투표 할 가능성이 있으므로 투표자가 데이터베이스의 각 후보자에 투표하도록 등록 할 투표 신청을하고 있습니다. 동시 읽기 및 업데이트 문제, 동일한 가치,이 조건을 처리하는 방법에 직면하고 있습니다. 각 투표가 등록되고 지연이 최소화되어야합니다. 데이터베이스로 JDBC와 MySQL을 사용하고 있습니다.데이터베이스에서 동일한 값을 동시에 읽고 쓸 수 있음

+0

코드의 모양은 무엇입니까? '후보 집합 1 = (후보 1 + 1)'을 업데이트 하시겠습니까? –

+0

diff 테이블을 사용하여 후보자와 투표를 저장합니다. 사람이 투표 할 때 항목을 추가 할 수 있습니다. 나중에 조인을 통해 결과를 얻을 수 있습니다. – Kajal

답변

0

@ user3418790 해당 테이블에서 InnoDB DB 엔진을 사용하고 있는지 확인하십시오.

트랜잭션에서 잠금을 사용하고 테이블에 타임 스탬프 또는 버전 식별자를 저장하여 행이 변경된시기를 알 수 있습니다.

  1. 트랜잭션을 시작하십시오.
  2. 타임 스탬프 또는 버전을 가져 와서 예상되는 값과 비교하십시오. 변경된 경우 실패하고 사용자가이를 처리하게하십시오.
  3. 데이터를 업데이트하십시오.
  4. 트랜잭션을 커밋하십시오.

그것입니다.