의 당신이 정의와 테이블을 상상해 보자MySQL InnoDB가 동시 업데이트를 처리 할 수있는 이유와 PostgreSQL에서 실행할 수없는 이유는 무엇입니까?
CREATE TABLE public.positions
(
id serial,
latitude numeric(18,12),
longitude numeric(18,12),
updated_at timestamp without time zone
)
그리고 당신은 같은 테이블에 50,000 행이.
당신은 30 개 다른 스레드에서 같은 쿼리를 실행하면 문 (이 특정 데이터 세트) 50,000 1,000 행업데이트됩니다
update positions
set updated_at = now()
where latitude between 234.12 and 235.00;
, MySQL의 InnoDB의 : 지금 테스트 목적으로이 같은 업데이트를 실행합니다 성공하고 postgres는 많은 교착 상태로 실패합니다.
왜?
네 말이 맞아. 당신은 다음을 사용하여 포스트 그레스에서 이것을 해결할 수 있습니다 : UPDATE .... 어디에서 id (SELECT ... FROM ... WHERE ... id에 의한 업데이트 순서). – SDReyes
나는 * right * 솔루션이 30 개 스레드가 동일한 행을 업데이트하도록하지 않을 것이라고 생각합니다. –
, 우리는 DB를 강조하고 있습니다. 이것은 우리가 벤치마킹의 일부이기 때문에 우리가하는 것입니다! xD – SDReyes