Published on

June 22, 2012

Мониторинг пространства журнала SQL Server

Когда речь идет о мониторинге пространства журнала в SQL Server, доступны различные методы. Один из традиционных методов, который долгое время использовался, это команда DBCC SQLPERF(logspace). Несмотря на то, что более новые версии SQL Server предоставляют более продвинутые варианты, такие как DMV, счетчики производительности и расширенные события, команда DBCC SQLPERF(logspace) все еще выполняет свою функцию.

Давайте посмотрим, как используется команда DBCC SQLPERF(logspace) для получения информации о пространстве журнала. Следующий скрипт демонстрирует использование:

CREATE TABLE dbo.logSpaceUsage
(
id INT IDENTITY (1,1),
logDate DATETIME DEFAULT GETDATE(),
databaseName SYSNAME,
logSize DECIMAL(18,5),
logSpaceUsed DECIMAL(18,5),
[status] INT
)

INSERT INTO dbo.logSpaceUsage
(databaseName, logSize, logSpaceUsed, [status])
EXEC ('DBCC SQLPERF(logspace)')

SELECT *
FROM dbo.logSpaceUsage

В приведенном выше скрипте мы создаем таблицу с именем logSpaceUsage, чтобы хранить информацию о пространстве журнала. Затем мы используем команду DBCC SQLPERF(logspace) для получения информации о пространстве журнала и вставляем ее в таблицу. Наконец, мы выбираем все записи из таблицы для просмотра использования пространства журнала.

Теперь перейдем к головоломкам:

Головоломка 1: Временной период с наибольшим ростом

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

SELECT databaseName, MAX(logSize - LAG(logSize) OVER (PARTITION BY databaseName ORDER BY logDate)) AS highestGrowth
FROM dbo.logSpaceUsage
GROUP BY databaseName

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

Головоломка 2: Рост размера файла журнала от начала до последней записи

Чтобы определить количество роста размера файла журнала от начала таблицы до последней записи данных, вы можете использовать следующий скрипт:

SELECT databaseName, MAX(logSize) - MIN(logSize) AS totalGrowth
FROM dbo.logSpaceUsage
GROUP BY databaseName

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

Не стесняйтесь оставлять комментарии с вашими правильными ответами, и на следующей неделе я опубликую правильные ответы с должным учетом. В качестве благодарности победители получат от меня сюрприз-подарок.

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.