메일 대기열을 구현하는 MySQL 테이블이 있으며 시스템의 예상치 못한 오류를보고하는 메일을 보내기 위해 사용합니다. 때로는 이러한 unexcepted 오류 ocurrs 그래서 내가 트랜잭션을 롤백 또한 삽입 된 행 (예기치 않은 오류를보고하는 메일) 메일 대기열 테이블에서 실행 취소됩니다.Mysql은 현재 트랜잭션을 무시한 행을 삽입합니다.
제 질문은 가능한 트랜잭션 롤백을 무시하고 트랜잭션 중간에 테이블에 행을 삽입하려면 어떻게합니까? 트랜잭션이 마침내 롤백되는 경우 오류 정보를보고하는 전자 메일에 대한 행 삽입도 롤백하지 않습니다.
이 테이블은 대기열에서 메일을 보내기 위해 여러 개의 비동기 프로세스에서 읽을 수 있으므로이 시나리오에서는 MyISAM 테이블 유형을 사용할 수 없도록 전자 메일을 보낼 수 있도록 행을 차단해야하며 Innodb.
미리 감사드립니다.
RDBMS 기능을 (잘못) 사용하지 않고 적절한 비동기 메일 대기열을 구현하지 않는 이유는 무엇입니까? –
@ N.B. 나는 달랐다 : RDBMS는 완벽하게 유효한 메일 대기열이다. 거기에있는 모든 RDBMS 기반 MTA가 저와 동의합니다. –
@EugenRieck 그것이 유효하지 않다고 나는 어디에서 말 했습니까? 여기서는 시나리오에 잘 맞지 않지만 트랜잭션은 사용 중이지만 쿼리는 롤백을 "생존"해야합니다. 이는 설계 실패를 의미하며 특정 데이터가 롤백에서 생존하도록 시도하는 것보다 다른 방법이 더 나은 솔루션 일 수 있습니다. –