Published on

May 6, 2012

Понимание управления памятью в SQL Server

При работе с SQL Server важно понимать, как управляется память, особенно при работе с большими базами данных. Одной из распространенных проблем, которая может возникнуть, является нехватка памяти при использовании табличной модели в SSAS.

Табличная модель в SSAS использует технологию xVelocity, которая загружает всю базу данных в память, сжимая данные. Однако, если база данных слишком велика для помещения в память, вы можете столкнуться с следующей ошибкой при обработке модели:

«Произошла следующая системная ошибка: Недостаточная квота для выполнения запрошенной службы. Ошибка памяти: Ошибка выделения. Если используется 32-разрядная версия продукта, рассмотрите возможность перехода на 64-разрядную версию или увеличения объема доступной памяти на компьютере. Текущая операция была отменена, потому что другая операция в транзакции завершилась с ошибкой».

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

Изменение свойства VertipaqPagingPolicy

Чтобы разрешить размещение на диске, вы можете изменить свойство VertipaqPagingPolicy в свойствах сервера анализа. Это можно сделать, щелкнув правой кнопкой мыши на сервере модели табличных данных и получив доступ к свойствам. Свойство VertipaqPagingPolicy имеет три возможных значения:

  • Ноль (0) – это значение по умолчанию и не разрешает размещение на диске. Если памяти недостаточно, обработка завершается с ошибкой нехватки памяти.
  • Один (1) – разрешает размещение на диске с использованием файла подкачки операционной системы (pagefile.sys). В памяти блокируются только хэш-словари, что позволяет табличным данным превышать общую физическую память.
  • Два (2) – разрешает размещение на диске с использованием отображаемых в память файлов. Аналогично варианту один, в памяти блокируются только хэш-словари.

Установив свойство VertipaqPagingPolicy на 1 или 2, сервер будет пытаться размещать на диске, если возникают ограничения памяти во время обработки. Кроме того, свойство VertiPaqMemoryLimit указывает уровень потребления памяти (в процентах от общей памяти), при котором начинается размещение на диске. Значение по умолчанию равно 60, что означает, что если потребление памяти меньше 60 процентов, сервер не будет размещать на диске.

Использование режима DirectQuery

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

Понимание управления памятью в SQL Server, особенно при работе с большими базами данных, является важным для оптимизации производительности и предотвращения ошибок, связанных с памятью. Изменяя свойство VertipaqPagingPolicy или используя режим DirectQuery, вы можете преодолеть ограничения памяти и обеспечить плавную обработку вашей модели табличных данных в SSAS.

Для получения дополнительной информации о настройках памяти в табличных экземплярах служб анализа, вы можете обратиться к официальной документации, предоставленной Microsoft.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.