Кэш Деньги против индексов уровня БД? - PullRequest
0 голосов
/ 28 марта 2011

Устраняет ли драгоценность Cache Money необходимость в индексах уровня БД (которые обычно используются для улучшения поиска запросов)?

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Caching = ответы на ваш запрос извлекаются из кеша (RAM), если они там есть.Доступ к базе данных возможен только при отсутствии кеша.

Индексирование = помогает базе данных отвечать на некоторые запросы (намного) быстрее (упрощенное определение, но здесь достаточно для моей цели).

Итак, кешускоряет запросы, вообще не обращаясь к базе данных, в то время как индекс ускоряет запросы, проходящие через кеш и попадающие в базу данных.

Преимущества кэширования зависят от специфики вашего приложения.Если в большинстве запросов запрашиваются одни и те же данные или у вас гораздо меньше обновлений, чем при чтении, рекомендуется использовать слой кэширования.Однако даже в лучших сценариях, которые я видел, 15-20% запросов все еще доходят до базы данных.Это означает, что вы не можете полагаться только на кэширование.

Но самое главное - индексы базы данных просты в определении и обычно не требуют обслуживания, если вы не становитесь огромными.Кэширование otoh намного сложнее - для гема cache-money вам нужно будет установить, настроить и поддерживать memcached.Это не ракетостроение, но все же добавляет еще один уровень сложности поверх вашей базы данных.Другими словами, это обычно преждевременная оптимизация.Я рекомендую начинать с индексов БД и добавлять слой кэширования только тогда, когда вы обнаружите, что он вам действительно нужен.

0 голосов
/ 28 марта 2011

Ничто не может заменить потребность в индексе.

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

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