Memcached против SQL Server кеш - PullRequest
21 голосов
/ 21 июня 2010

Я читал много статей, в которых предлагается поместить Memcached (или Velocity и т. Д.) Перед базой данных более эффективно, чем напрямую обращаться к базе данных.Это сократит число обращений к базе данных путем поиска данных в кэше памяти, что быстрее, чем попадание в базу данных.

Однако SQL Server имеет собственный кэш памяти для объектов в базе данных.Когда данные извлекаются, SQL Server поддерживает свой кэш и (при необходимости) извлекает строку из своей памяти, а не удаляет диск.

Так что, если у SQL Server есть собственный кэш, то в чем преимуществовнешнего сервера Memcached (или аналогичного)?

Большинство статей, которые я читал, посвящены сайтам социальных сетей, которые в основном используют MySql.Однако статья о MySpace, использующем SQL Server, предполагает, что в этой системе также используется кэширование.

В этой статье объясняется, когда следует использовать кэширование, и это статья является контрапунктом.

Ответы [ 3 ]

17 голосов
/ 22 июня 2010

Так что, если SQL Server имеет свой собственный кеш, в чем преимущество внешнего Memcached (или аналогичного) сервера?

Да, SQL Server имеет свой собственный кеш, но он кеширует только:
- Планы запросов
- страницы из базы данных файлов

но он НЕ кеширует:
- результаты запроса

например. у вас сложный запрос, который использует агрегирование большого количества данных (подумайте: сколько разных стран мы имеем в нашей базе данных клиентов: ВЫБЕРИТЕ РАЗЛИЧНУЮ страну от клиентов ГРУППА ПО СТРАНЕ)

SQL Server будет сканировать всю таблицу клиентов, но ваш набор результатов будет содержать только несколько записей. При повторном запросе SQL Server повторно использует план запроса и повторно сканирует таблицу клиентов. (и если вам повезет, страницы все еще в памяти)

Когда вы используете memcached, вы можете хранить несколько строк вашего набора результатов и использовать их снова и снова без подключения к серверу базы данных. Так что это требует некоторой нагрузки с вашего сервера базы данных.
ПРИМЕЧАНИЕ. Остерегайтесь устаревших данных, если ваши данные изменяются на сервере SQL !!

4 голосов
/ 23 июня 2010

Другим преимуществом также может быть то, что SQL Server является дорогим для масштабирования, тогда как добавление нового веб-сервера / сервера кэширования может быть дешевле.

Мы используем кеширование на уровне приложений для хранения всех видов вещей, но не всех из базы данных. Вы можете манипулировать объектами данных в вашем коде, а затем добавлять в кеш, например.

При необходимости вы даже можете сохранить разметку (кэширование вывода).

За один день, используя кеширование, мы перевели наш сайт с возможности обработки 150 одновременных сеансов во время стресс-тестирования до более 800. Я настоятельно рекомендую использовать его !!

0 голосов
/ 21 июня 2010

Velocity и др. - это БОЛЬШОЕ, особенно когда ваш SQL-сервер живет в своей собственной коробке. Мы использовали встроенное кэширование ASP.NET, но надеемся перейти на Velocity. Несколько веб-серверов взаимодействуют с кластером SQL, и кэширование действительно помогает с масштабируемостью и снижением нагрузки на SQL.

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