반응형
현재 MySQL 데이터베이스를 실행하고 있습니다. 내 모든 테이블은 테이블 엔진 InnoDB를 사용하고 있습니다.
내 응용 프로그램에 로그인하는 모든 사람이 레코드를 볼 수 있으며 어느 시점에서 두 명의 사용자가 동시에 레코드를 업데이트하거나 삽입 할 수 있을지 걱정됩니다. MySQL은 이러한 유형의 동시성 문제를 정상적으로 처리합니까, 아니면이 문제를 내 코드에 프로그래밍해야합니까?
내 코드에 프로그래밍해야한다면 이와 같은 동시성 케이스를 어떻게 처리할까요?
해결 방법
SQL 문은 원자 적입니다. 즉, 다음과 같이 실행하면 :
UPDATE Cars SET Sold = Sold + 1
이 문 중에 아무도 Sold
변수를 변경할 수 없습니다. 다른 사람이 같은 명령문을 동시에 실행하더라도 항상 1 씩 증가합니다.
서로 종속 된 문이있는 경우 문제가 발생합니다.
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
이러한 쿼리 사이에 다른 사용자가 Cars 테이블을 변경하고 Sold를 업데이트 할 수 있습니다. 이를 방지하려면 트랜잭션으로 래핑하십시오.
BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;
트랜잭션은 InnoDB에서 지원하지만 MyISAM에서는 지원하지 않습니다.
참조 페이지 https://stackoverflow.com/questions/4828490
반응형
'MySql' 카테고리의 다른 글
MySQL # 1060-중복 열 이름 'id' (0) | 2020.10.20 |
---|---|
MySQL Step-by-step guide for running PHP/MySQL on IIS 7.5 (0) | 2020.10.20 |
MySQL 테이블의 최대 행은 얼마입니까? (0) | 2020.10.20 |
MySQL datetime x min 전과 datetime x min 전 사이에서 mysql 테이블에서 선택 (0) | 2020.10.20 |
MySQL 온라인 MySql / Sql 데이터베이스가있는 Xamarin Android 앱 (0) | 2020.10.20 |
댓글