Когда мы выполняем аннулирование кэша? - PullRequest
1 голос
/ 29 апреля 2019

Отрывок из Wiki об аннулировании кэша - «Аннулирование кэша - это процесс в компьютерной системе, посредством которого записи в кэше заменяются или удаляются».Но с какой стати мы должны аннулировать Cache?Я могу думать только о возможном сценарии: если по какой-то причине кеш и база данных не синхронизируются, данные в кеше будут устаревшими.Чтобы синхронизировать его, нам нужно будет аннулировать кеш.Но синхронизация кэша и БД (за исключением короткого периода времени, когда данные еще предстоит записать в оба), не является желательным поведением.Итак, аннулирование кэша действует как средство защиты, если мы обнаруживаем, что кэш не содержит правильных данных.Это его единственная цель?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Существует недействительность кэша, поскольку большинство кэшей работают на основе компромисса производительности и емкости.

Рассмотрим твердотельный или жесткий диск. Производительность SSD будет лучше, но объем данных, которые вы можете хранить, будет хуже при том же уровне затрат. Часто люди объединяют их, чтобы получить производительность SSD для часто используемых файлов (например, операционной системы) и HDD для сырой емкости хранения.

Процессоры структурированы в похожей иерархии, где ближайший к процессору самый быстрый, но и самый маленький. Затраты в этом случае - это не только денежные затраты, но и физическое пространство, энергопотребление, производство тепла и т. Д.

  1. Регистры процессора - самые быстрые, очень маленькие
  2. Кэши ЦП (также имеют свою собственную иерархию) - быстро, мало
  3. RAM - средний, большой

Чтобы обеспечить максимальную производительность кэша, необходимо поддерживать наиболее часто используемые элементы, чтобы обеспечить лучшее соотношение попаданий в кэш и пропусков. Мы хотим получать из наших более медленных источников как можно реже. Точно так же из-за ограниченного размера мы должны исключить элементы, к которым обращаются реже всего.

Аннулирование кэша - это стратегия, которую мы будем использовать, чтобы решить, какие предметы выселить и когда, чтобы освободить место для новых предметов, которые с большей вероятностью потребуются снова. Это не применимо, если ваш кэш содержит полное представление какого-либо другого источника данных.

0 голосов
/ 29 апреля 2019

Есть много причин.Вероятно, один из самых распространенных: кэш (часто по своей природе) намного меньше по сравнению с общим объемом данных, которые необходимо сохранить.

Другими словами: если вы просто продолжаете добавлять и добавлять элементы в свой кэш, он становится полной копией ваших данных.Соответственно, у вас быстро кончается память.

Другими словами: природа кэша такова: его размер ограничен (каким-то образом).Таким образом, рано или поздно вы сталкиваетесь с решением вроде: «Я не могу просто добавить новый элемент в кеш, мне нужно сначала освободить место».И тогда вы должны сделать именно это: сделать недействительной одну из записей в вашем кеше, чтобы было место для этой "новой" записи.

И с учетом комментария ОП: часто делает недействительным весь кеш выглядит как «перезапуск» вашей программы, или «переустановка приложения», или «перезагрузка устройства»,Это часто рассматривается как «универсальное» средство для обеспечения возврата программы / приложения в известное исправное состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...