В программе на Perl я кэширую результат запроса SQL для ускорения работы программы.
Я вижу два распространенных способа сделать это:
- Создать хеш, используя запрос в качестве индекса для кэширования результата, как предложено здесь
- Создать хеш с индексом, кроме 2, первый - это список используемой таблицы, второй - это пункт где
Сегодня я использовал 2-й вариант, потому что кэш для данного набора таблиц легче очищать, когда вы знаете, что они были изменены.
Моя проблема заключается в обработке очистки кэша, сегодня большинство запросов на выборку, которые я делаю, относятся к таблице с очень небольшими изменениями. Поэтому, когда я запускаю обновление / удаление / ... я просто очищаю часть хеш-таблицы, которая кеширует результат для этой таблицы.
Это мало влияет на производительность, так как мне редко приходится чистить часть часто используемого хеша.
Но теперь для программы с более частым обновлением / удалением в большинстве таблиц это делает мой кеш намного менее эффективным, поскольку мне часто приходится его очищать.
Как с этим бороться? Моя текущая система кеширования довольно проста, Cache :: Memcached :: Fast довольно сложен. У вас есть решение, которое было бы более эффективным, чем мое, но все же довольно простое?