MySQL 테이블에서 증분 업데이트를 추출하고 싶습니다. 해당 테이블에는 자동 증분 ID 필드와 모든 변경 (INSERT/UPDATE)시 현재 타임 스탬프로 업데이트되는 updated_at 필드가 있습니다. 레코드는이 테이블에서 삭제되지 않습니다.MySQL 테이블에서 증분 업데이트 추출
스크립트의 마지막 실행 이후이 테이블에서 새로 생성되고 업데이트 된 모든 레코드를 추출하고 싶습니다. 마지막 실행에서 가장 높은 updated_at 값을 알고 있습니다. 따라서 레코드를 추출하는 주요 쿼리는 다음과 같습니다.
SELECT * FROM table WHERE updated_at >= :last_seen_updated_at
가장 좋은 방법은 무엇입니까? 모든 새롭고 업데이트 된 기록을 추출 할 수 있는지 100 % 확신해야합니다. 몇 가지 질문 및 염려 사항 :
- 여러 초 기록이 업데이트 될 수 있으며 그 중 일부는 이전 추출 실행에 포함될 수 있으며 그 중 일부는 업데이트되지 않을 수 있습니다. (예 : 추출기가 초의 첫 번째 절반에서 실행되는 반면 레코드는 초의 두 번째 절반에서 업데이트 될 수 있습니다.)
- 하나의 큰 SELECT 쿼리를 사용해야합니까? 아니면 여러 쿼리를 사용하여 X 레코드의 배치를 추출해야합니까? ? 추출 할 데이터 양이 클 수 있습니다. 일괄 처리를 사용하는 경우 다른 쿼리간에 레코드가 업데이트 될 수 있습니다.
- 중복 레코드를 추출하지 않아야하지만 큰 문제는 아닙니다. (예를 들어
updated_at >= :last_seen_updated_at - INTERVAL 1 MINUTE
) 내가? REPEATABLE READ 이러한 쿼리를 실행해야합니까 격리 모드 - ? SERIALIZABLE?
- MySQL의 D? "안전을 위해", 마지막으로 본 갱신하기 전에 시간의 X 금액을 시작하는 의미가 atabase는 복제 된 슬레이브이며 마스터 DB보다 다소 뒤떨어져 있습니다. 이것은 행이 포함되거나 포함되지 않을 때 어떤 영향을 미칠 수 있습니까?