2012-11-15 3 views
2

동시성 제어와 그것에 대해 걱정할 때가 있습니다. 필자는 PHP/MySQL 사이트 (InnoDB)를 만들었습니다. 트랜잭션 문제를 피하는 방법에 대해서는 알고 있지만 동시성 제어가 있습니다.동시성 제어에 대해 걱정할 때 PHP mysql

내 사이트는 사용자 삽입 품을 보유하고있는 전자 상거래입니다. 사용자가 새 항목을 사이트에 삽입하면 DB는 productId를 기본 키로 만들고 (DB에 의해 자동 증가) 양식을 통해 제출 된 해당 제품에 대한 다른 데이터를 저장합니다. 준비된 문장을 사용하고 있습니다.

두 명 이상의 사용자가 동시에 정확하게이 작업을 수행 할 경우 걱정할 필요가 있습니까? 두 개 이상의 항목을 동시에 제출하면 다른 행의 데이터가 엉망이 될 가능성이 있습니까?

제품을 삽입하려면 사용자가 질문을 할 때 세션을 사용하여 로그인해야합니다.

미리 감사드립니다. Markus.

+3

아니요. auto_increment id는 수행되는 병렬 삽입의 수에 관계없이 고유해야합니다. 롤백 된 트랜잭션에서 생성 된 ID는 다시 사용되지 않습니다. –

+0

아하, 알아두면 좋을거야. 답변 감사합니다. – Markus

답변

3

정확히 같은 행에 쓰지 않는 한, 왜 동시성 문제가 있는지 알 수 없습니다. 비록 그들이 같은 행에 글을 쓰고 있었다고해도, InnoDB는 로우 레벨을 고정하고 있습니다. 즉, 사용자가 쓰기를 마칠 때까지 행이 잠기고 이후 사용자는 잠금까지 "대기"합니다 출시되었습니다. "INSERT 쿼리 충돌"가능성 : 자동 증가 기본 키를 사용하는 테이블에 새 데이터를 삽입 할 때마다 매번 고유 ID를 얻게되므로 동시성이 절대로 없어야합니다. INSERT에 관한 문제입니다.

+0

나는 대답을 주셔서 감사합니다. – Markus

2

빠른 테이블 잠금은 특히 업데이트시 유용합니다.

관련 문제