MSSQL Error 49930: Log writer performance degraded on drive containing LDF
- Предупреждение в журнале SQL:
Error 49930: Log writer performance degraded on drive containing LDF file. I/O requests taking longer than 15 seconds. - Высокие задержки по типу ожидания
WRITELOGпри фиксации транзакций. - Резкое падение пропускной способности при проведении документов в 1С.
1. Анализ задержек дискового ввода-вывода файла журнала
SELECT
DB_NAME(vfs.database_id) AS DatabaseName,
mf.physical_name,
vfs.io_stall_write_ms / NULLIF(vfs.num_of_writes, 0) AS AvgWriteLatency_MS,
vfs.io_stall_read_ms / NULLIF(vfs.num_of_reads, 0) AS AvgReadLatency_MS
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id
WHERE mf.type_desc = 'LOG';Значение AvgWriteLatency_MS для LDF не должно превышать 2-5 мс.
2. Проверка фрагментации виртуальных файлов журнала (VLF)
SELECT
name AS DatabaseName,
total_vlf_count,
active_vlf_count
FROM sys.databases d
CROSS APPLY sys.dm_db_log_stats(d.database_id);Если количество VLF превышает 500-1000, выполните сжатие и контролируемое расширение LDF:
USE [MyDatabase];
CHECKPOINT;
DBCC SHRINKFILE (N'MyDatabase_Log', 1024);
-- Принудительное увеличение цельным куском
ALTER DATABASE [MyDatabase] MODIFY FILE (NAME = N'MyDatabase_Log', SIZE = 8192MB, FILEGROWTH = 1024MB);3. Включение режима Delayed Durability (при допустимости потерь)
Для ускорения фиксации некритичных пакетных транзакций:
ALTER DATABASE [MyDatabase] SET DELAYED_DURABILITY = ALLOWED; Частые вопросы (FAQ)
Что означает ожидание WRITELOG в MSSQL?
Ожидание WRITELOG указывает на время, в течение которого транзакция ждет физической записи и сброса буфера журнала транзакций (Log Block) на диск перед подтверждением (COMMIT).
Почему фрагментация VLF замедляет запись журнала?
Обилие мелких VLF (виртуальных файлов журнала) создает накладные расходы на управление метаданными и замедляет как саму запись, так и операции резервного копирования и восстановления.
Помогает ли размещение LDF на отдельном массиве RAID 10 / NVMe?
Да, журнал транзакций пишется строго последовательно. Разделение LDF и MDF по разным физическим накопителям устраняет конкуренцию за головки диска и контроллер.
Каким должен быть размер шага автоувеличения (FILEGROWTH) для LDF?
Не используйте проценты. Рекомендуется фиксированный шаг от 512 MB до 2048 MB для предотвращения фрагментации VLF.