Published on

November 18, 2011

Понимание операций хранения в SQL Server

Вы когда-нибудь задавались вопросом, почему SQL Server иногда использует операции хранения в своих планах выполнения? В этой статье мы рассмотрим концепцию операций хранения в SQL Server и поймем, когда и почему они используются.

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

Давайте рассмотрим пример, чтобы понять, как работают операции хранения. Рассмотрим следующий запрос:

UPDATE Person.Person
SET FirstName = 'Ted'
WHERE FirstName = 'Ted';

При генерации плана выполнения для этого запроса используется операция жадного хранения в качестве механизма отката и для предотвращения сценария Хэллоуин. Операция жадного хранения немедленно извлекает данные и сохраняет их во временной таблице внутри выполнения запроса.

С другой стороны, операция ленивого хранения используется в сценариях, где требуется собрать рекурсивные данные вместе. Например, рассмотрим следующий запрос:

WITH DirectReports(ManagerID, EmployeeID, EmployeeLevel) AS
(
    SELECT ManagerID, EmployeeID, 0 AS EmployeeLevel
    FROM HumanResources.Employee
    WHERE ManagerID IS NULL
    UNION ALL
    SELECT e.ManagerID, e.EmployeeID, EmployeeLevel + 1
    FROM HumanResources.Employee e
        INNER JOIN DirectReports d
        ON e.ManagerID = d.EmployeeID
)
SELECT ManagerID, EmployeeID, EmployeeLevel
FROM DirectReports;

В этом случае операция ленивого хранения используется для загрузки данных по мере их запроса. Операция ленивого хранения служит средством для сбора рекурсивных данных вместе, загружая только необходимые данные.

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

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

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

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.