При использовании сжатия на уровне строк или страниц с SQL Server 2008 R2, SQL Server сохраняет данные в своем буферном кеше в сжатом виде или в расширенном виде.
Например, допустим, у меня есть таблица, которая (на уровне страницы) сжата до 20% от ее первоначального размера:
Original size: 100 GB
Compressed size: 20 GB
Кроме того, (выделенный) хост, которым является этот конкретный экземпляр SQL Serverработает на 24 ГБ памяти.Если запрос выполняет сканирование таблицы, просматривая все столбцы (для примера) и SQL Server кэширует данные как сжатые, теоретически он может хранить все данные в своем буферном кеше и быть доступным для будущих запросов.Однако если данные кэшируются без сжатия, очевидно, что 100 ГБ данных не могут поместиться в 24 ГБ памяти сервера.
Итак, как SQL Server хранит сжатые данные в своем буферном кеше?