Перейти к содержимому
11 / 12

Когда кэш не нужен и чем он опасен?

Кэш — не бесплатное ускорение, а второй источник правды со своей жизнью. Он не нужен, когда база и так отвечает быстро при текущей нагрузке, когда данные читаются редко (кэш не успевает прогреться и hit rate низкий), когда требуется строгая актуальность, и когда узкое место не в чтении, а в записи или в бизнес-логике. Опасности три. Рассогласование: пропущенная инвалидация показывает пользователю старые данные, и такие баги воспроизводятся плохо. Скрытая зависимость на доступность: сервис, спроектированный «с кэшем», при его отказе получает стократный всплеск нагрузки на базу и падает вместе с ней — если кэш стал необходимым, это уже не кэш, а хранилище. Маскировка проблемы: закэшированный тяжёлый запрос перестаёт быть заметным, и настоящая причина — отсутствующий индекс или N+1 — остаётся в системе и всплывает при первом же промахе. Перед кэшем всегда стоит попробовать индекс, переписанный запрос и пагинацию.

Когда кэш не нужен и чем он опасен? | JScriptiser