Подтвердить что ты не робот

Кэш Memcached vs SQL Server

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

например. у вас есть сложный запрос, который использует некоторую агрегацию для большого количества данных (подумайте: сколько разных стран у нас есть в нашей базе данных клиентов: SELECT DISTINCT Страна из группы клиентов GROUP BY)

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

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

Ответ 2

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

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

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

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

Ответ 3

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