캐시 키의 일부로 원본 테이블의 마지막 업데이트 시간을 사용하여 memcached에 데이터베이스 쿼리의 처리 된 결과를 저장하는 데 성공했습니다. MyISAM 테이블의 경우 마지막 변경 시간은 SHOW TABLE STATUS
입니다. 불행히도, InnoDB 테이블에서는 보통 NULL이다.InnoDB 테이블이 마지막으로 변경된 시점을 어떻게 알 수 있습니까?
MySQL 4.1에서 InnoDB의 SHOW TABLE STATUS
행에 대한 ctime은 보통 실제 최종 업데이트 시간 이었지만 MySQL 5.1에서는 그렇지 않습니다.
테이블에 DATETIME 필드가 있지만 행이 수정 된 경우에만 표시됩니다. 더 이상 존재하지 않는 행의 삭제 시간을 표시 할 수 없습니다! 그래서, 나는 정말로 MAX(update_time)
을 사용할 수 없다.
정말 까다로운 부분이 있습니다. 나는 내가 읽는 많은 복제본을 가지고있다. 변경 사항이 실제로 적용되었을 때 의존하지 않는 테이블의 상태를 파악할 수 있습니까?
잠시 동안 작업 한 결과 내 결론은 내가 원하는만큼 저렴하게이 정보를 얻을 수 없다는 것입니다. 나는 아마도 테이블이 바뀔 것으로 예상 할 때까지 데이터를 캐싱 할 것입니다 (하루에 한 번 업데이트됩니다). 그리고 쿼리 캐시가 가능한 한 도움을 줄 수있게하십시오.
이 InnoDB의 트리거 대한 2.nd 경로를가는 경우 유의 사항 : "참고 현재 계단식 외래 키 동작은 트리거를 활성화하지 않습니다." ([13.2.2.5. FOREIGN KEY Constraints] (http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html)에서) –