Пояснение к выводу функции fn_dblog() на SQL Server 2008 R2

У меня есть запрос, чтобы получить основную информацию о журнале транзакций (.ldf) файл. Вот:

WITH CTE AS
(
    SELECT
        AllocUnitName,
        Operation,
        Context,
        [Lock Information],
        SUM(CONVERT(BIGINT, [Log Record Length])) AS TotalTranLogBytes,
        SUM(CONVERT(BIGINT, [Log Record Length])) * 100 /
            SUM(CONVERT(MONEY, SUM(CONVERT(BIGINT, [Log Record Length]))))
            OVER() AS PercentOfLog
    FROM
        sys.fn_dblog(NULL,NULL)
    GROUP BY
        AllocUnitName,
        Operation,
        Context,
        [Lock Information]
)

SELECT
    AllocUnitName,
    Operation,
    Context,
    [Lock Information],
    TotalTranLogBytes,
    PercentOfLog
FROM
    CTE
WHERE
    PercentOfLog >= 0
ORDER BY
    TotalTranLogBytes DESC

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

Тем не менее, есть и другие столбцы, AllocUnitName, Operation а также Context, В моем случае я получаю:

dbo.MyMassiveTable.PK_MyMassiveTable    LOP_MODIFY_ROW  LCX_TEXT_MIX        3848564 61.6838

... как мой вывод. Но что на ЗЕМЛЕ делает LOP_MODIFY_ROW, а также LCX_TEXT_MIX на самом деле значит?

Очевидно, я смутно понимаю, что это как-то связано с первичным ключом для этой таблицы, что он связан с командой UPDATE, и что с колонкой Text что-то происходит?

Но мне нужна точность!

Любой, кто может помочь мне понять, почему эта конкретная часть журнала транзакций такая ОГРОМНАЯ, очень помогла бы!

1 ответ

Это указывает на то, что таблица содержит столбец с некоторым типом данных больших объектов, который был подвержен операции вставки или обновления (т.е. MAX тип данных, XML, Тип данных CLR или IMAGE или же [N]Text).

dbo.MyMassiveTable.PK_MyMassiveTable должен быть либо кластеризованным индексом, либо некластеризованным индексом, который INCLUDEодин или несколько столбцов больших объектов.

LCX_TEXT_MIX предположительно указывает на текстовую страницу микширования:

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

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

CREATE TABLE dbo.MyMassiveTable
  (
     pk    INT IDENTITY CONSTRAINT PK_MyMassiveTable PRIMARY KEY,
     Blob1 NVARCHAR(MAX)
  )

INSERT INTO dbo.MyMassiveTable
VALUES     (REPLICATE(CAST(N'X' AS VARCHAR(MAX)), 3848564 / 2)); 
Другие вопросы по тегам