2015-10-27 8 views
1

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

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 -s один или несколько столбцов LOB.

LCX_TEXT_MIX предположительно указывает text mix page:

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

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));