타임스탬프를 사용하여 실제 데이터 수정을 감지하는 MySQL 트리거 최적화
도전:
MySQL의 "AFTER UPDATE"는 실제 데이터 변경 없이도 실행을 실행하여 불필요한 실행과 성능 병목 현상을 발생시킵니다.
해결책:
타임스탬프를 사용하면 효율적인 솔루션이 제공됩니다. MySQL의 TIMESTAMP
데이터 유형은 각 행 수정 시 현재 시간으로 자동 업데이트됩니다. 트리거 내의 NEW
및 OLD
타임스탬프 값을 비교하면 실제 데이터 변경 사항을 정확하게 식별할 수 있습니다.
예시 코드:
이 트리거는 타임스탬프를 활용하여 실제 데이터 변경 시에만 실행됩니다.
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
메커니즘:
NEW
: 업데이트된 행의 새 값을 나타냅니다.OLD
: 업데이트 이전
NEW.ts != OLD.ts
: 이 비교를 통해 타임스탬프가 다른 경우에만 트리거가 활성화되어 실제 데이터 변경을 나타냅니다.혜택:
중요 고려 사항:
TIMESTAMP
열이 만 업데이트된다고 가정합니다. 타임스탬프를 독립적으로 수정할 수 있는 경우 이 접근 방식은 신뢰할 수 없을 수 있습니다.위 내용은 타임스탬프는 실제 데이터 변경 사항만 감지하도록 MySQL 트리거를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!