Memcached по сравнению с кэшем SQL Server

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

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

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

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

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

21
задан Mike Therien 21 June 2010 в 12:53
поделиться

3 ответа

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

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

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

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

SQL Server будет сканировать ВСЕ таблицу клиентов, но ваш набор результатов будет содержать всего несколько записей. Когда вы повторно отправите запрос, SQL Server повторно использует план запроса и повторно просканирует таблицу клиентов, (и если вам повезет, страницы все еще находятся в памяти)

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

17
ответ дан 29 November 2019 в 21:52
поделиться

Velocity и др. - ПРЕКРАСНЫЕ, особенно когда ваш SQL-сервер находится в отдельном компьютере. Мы использовали встроенное кэширование ASP.NET, но надеемся перейти на Velocity. Несколько веб-серверов взаимодействуют с кластером SQL, и кеширование действительно помогает с масштабируемостью и уменьшением нагрузки SQL.

0
ответ дан 29 November 2019 в 21:52
поделиться

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

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

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

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

4
ответ дан 29 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: