Зачем мне использовать кеш-сервер, хотя СУБД имеет свой кеш? - PullRequest
0 голосов
/ 09 октября 2018

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

Подробнее о приложении (мнимое):

  • Размер базы данных составляет более 300 ГБ (предпочтительно MySQL или любой другой СУБД)
  • Объем оперативной памяти составляет 32 ГБ
  • База данных может находиться или не находиться на веб-сервере

=== в случае использования серверов кэширования ===

  • Три сервера, каждый из которых с 32 ГБ памяти

Я знаю, что серверы кэширования, такие как memcached, фактически создают впечатлениеу вас агрегированный кеш 96ГБ.Но с другой стороны, должно быть по крайней мере несколько дополнительных запросов от земли веб-сервера к земле кеш-сервера.

Мое понимание пути, по которому должен пройти каждый запрос, сделанный клиентами, выглядит примерно так:

При использовании серверов кеша:

веб-сервер=> сервер кеша == существуют ли данные внутри сервера кеша?=>

  1. YES => веб-сервер => клиент
  2. NO => сервер БД => веб-сервер => клиент;также запрос на сохранение к серверу кэша

Если серверы кэша не используются:

веб-сервер => сервер БД => веб-сервер => клиент

А также, что если оба веб-сервера и сервер БД находятся на одном компьютере?Так что у нас будет это: веб-сервер => клиент

Итак, мои основные вопросы:

  • Стоит ли делать дополнительные запросы с веб-сервера надругие серверы вместо того, чтобы делать один запрос к нашей БД?
  • Я что-то здесь упустил?
  • Есть ли другие решения?Какой подход используют большие системы, такие как Википедия, в этой конкретной проблеме и кешировании?
  • Можем ли мы использовать другой подход, такой как использование какой-либо специальной системы кеширования, связанной с СУБД, где каждый сервер хранит базу данных, но кэширует только часть ее в памяти,Таким образом, мы можем не только использовать другие серверы для обеспечения высокой доступности и репликации, но и уменьшить количество запросов.

1 Ответ

0 голосов
/ 16 октября 2018
  • Прежде всего, кеш используется для повышения производительности системы.Разница между кешем и базой данных заключается в том, что данные, хранящиеся в базе данных, сохраняются на диске, а в кеше они сохраняются в оперативной памяти.потому что доступ к данным из ОЗУ происходит быстрее, чем доступ с диска.

  • В некоторых базах данных, таких как MySQL, встроенный кэш, но у него также мало проблем, например, где будут храниться данные, хранящиеся в кеше MySQL.удаляется автоматически, если вы вносите какие-либо обновления в таблицу, такие как вставка, удаление и обновление.

  • Кроме того, нет необходимости сохранять другой сервер для кэша, если вы собираетесь кэшировать только несколько МБданных.в некоторых кеш-системах, таких как Memcached и Redis, вам может понравиться объем памяти, выделяемый для кеша.если кэш достиг предела памяти, уже существующие данные будут удалены в соответствии с настроенной нами политикой удаления.Кроме того, мы используем кеш не только для кеширования результатов запроса к БД, но также можем кешировать некоторые настройки конфигурации вместо того, чтобы каждый раз читать их из файла.

...