SQL Server 2014 представил очень интересную функцию под названием Delayed Durability . Если вы можете допустить потерю нескольких строк в случае катастрофического события, такого как сбой сервера, вы действительно можете повысить свою производительность в таких сценариях, как ваш.
Долговечность транзакций достигается с помощью асинхронного журнала
пишет на диск. Записи журнала транзакций хранятся в буфере и
записывается на диск, когда заполняется буфер или происходит событие очистки буфера
место. Задержка длительности транзакций снижает как задержку, так и
конфликт в системе
База данных, содержащая таблицу, должна быть сначала изменена для обеспечения отсроченного срока службы.
ALTER DATABASE dbname SET DELAYED_DURABILITY = ALLOWED
Тогда вы можете контролировать срок службы для каждой транзакции.
begin tran
insert into ChangeTrackingTable select * from inserted
commit with(DELAYED_DURABILITY=ON)
Транзакция будет подтверждена как длительная, если транзакция является кросс-базой данных, поэтому это будет работать только в том случае, если ваша таблица аудита находится в той же базе данных, что и триггер.
Существует также возможность изменить базу данных как принудительную, а не разрешенную. Это приводит к тому, что все транзакции в базе данных становятся отложенными.
ALTER DATABASE dbname SET DELAYED_DURABILITY = FORCED
Для отсроченного срока службы нет разницы между неожиданным
завершение работы и ожидаемое завершение работы / перезапуск SQL Server. подобно
катастрофические события, вы должны планировать потерю данных. В запланированном
завершение / перезапуск некоторых транзакций, которые не были записаны на диск
может быть сначала сохранен на диск, но вы не должны планировать это. Планировать как
хотя остановка / перезапуск, запланированный или незапланированный, теряет
данные совпадают с катастрофическим событием.
Надеемся, что этот странный дефект будет исправлен в следующем выпуске, но до тех пор, возможно, будет целесообразно автоматически выполнить процедуру sp_flush_log при перезапуске или завершении работы SQL-сервера.