특정 날짜에 API 호출을 통해 대량의 JSON 데이터를 가져 오는 레거시 API 응용 프로그램이 있습니다.MySQL은 많은 양의 행을 삭제하고 중단없이 새 데이터를 다시 입력합니다.
데이터베이스를 새 정보로 업데이트하려면 해당 날짜와 관련된 모든 행을 삭제 한 다음 모든 새로운 행을 루프하고 삽입해야합니다. 이것은 날짜 당 약 1200 행입니다. 삽입은 JSON 데이터가 각 행에서 추가 작업이 필요하므로 '루프'로 처리해야합니다.
약 5 분마다 정기적으로 발생합니다.
이 기간 동안 - 연중 무휴로 현재 데이터에 정기적으로 액세스하는 사용자가 있습니다. 보고서를로드하거나 데이터가 없거나 데이터가 불완전한 것으로 보이는 보고서가 있습니다.
나의 추측에 따르면 데이터 삭제 및 '재로드'사이의 보고서에 액세스하고 있습니다. 이 문제가 발생하지 않도록하려면 어떻게해야합니까?
내가 알아야 할 것은 DB 트랜잭션이이 문제를 해결할 것인가입니다. DB 트랜잭션은 무언가가 실패 할 경우 작업 중에 롤백을 허용한다는 것을 알고 있습니다. 그러나 한 트랜잭션 내에서 끊김없는 삭제 및 업데이트도 허용합니까? 이
try {
$db->beginTransaction();
$db->query('delete query');
$db->query('insert query');
$db->commit();
} catch (Exception $e) {
$db->rollback();
}
호기심에서 db 유형 innoDB입니까? – KarelG
임시 데이터베이스에 행을 삽입 한 다음 업데이트가 완료되면 데이터베이스 이름을 바꿉니다 –
거래를해야합니다. 맞습니다. 나는 트랜잭션을 시작하기 전에 json을 구문 분석하고 SQL 형식으로 저장하여 필요한 모든 입력을 체인으로 연결하여 단일 삽입 쿼리를 실행할 수 있습니다. – rekaszeru