В прошлом я успешно сохранял (сильно) обработанные результаты запроса к базе данных в memcached, используя время последнего обновления базовых таблиц в качестве части ключа кэша. Для таблиц MyISAM это последнее измененное время доступно в SHOW TABLE STATUS
. К сожалению, это обычно NULL для таблиц InnoDB.
В MySQL 4.1 ctime для InnoDB в его строке SHOW TABLE STATUS
обычно было фактическим временем последнего обновления, но, похоже, это не так для MySQL 5.1.
В таблице есть поле DATETIME, но оно показывает только то, когда строка была изменена - оно не может показать время удаления строки, которой больше нет! Итак, я действительно не могу использовать MAX(update_time)
.
Вот действительно сложная часть. У меня есть ряд реплик, с которых я читаю. Могу ли я определить состояние таблицы, которая не зависит от фактического применения изменений?
Мой вывод, после некоторой работы над этим, заключается в том, что получить такую информацию дешевле, чем мне хотелось бы, не представляется возможным. Я, вероятно, собираюсь кэшировать данные до того времени, когда я ожидаю, что таблица изменится (она обновляется один раз в день), и позволю кешу запросов помочь, где это возможно.