트랜잭션 내구성 제어Control Transaction Durability

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 트랜잭션 커밋은 완전 내구성( SQL ServerSQL Server 기본값)이 있거나 지연된 내구성(느린 커밋이라고도 함)이 있습니다. default, or delayed durable (also known as lazy commit).

완전 내구성이 있는 트랜잭션 커밋은 동기적이므로 트랜잭션에 대한 로그 레코드가 디스크에 기록된 후에만 커밋을 성공으로 보고하고 클라이언트에 컨트롤을 반환합니다.Fully durable transaction commits are synchronous and report a commit as successful and return control to the client only after the log records for the transaction are written to disk. 지연된 내구성이 있는 트랜잭션 커밋은 비동기적이므로 트랜잭션에 대한 로그 레코드가 디스크에 기록되기 전에 커밋을 성공으로 보고합니다.Delayed durable transaction commits are asynchronous and report a commit as successful before the log records for the transaction are written to disk. 트랜잭션이 내구성을 가지려면 디스크에 트랜잭션 로그 항목을 기록해야 합니다.Writing the transaction log entries to disk is required for a transaction to be durable. 지연된 내구성이 있는 트랜잭션은 트랜잭션 로그 항목을 디스크에 플러시한 경우에 내구성을 가집니다.Delayed durable transactions become durable when the transaction log entries are flushed to disk.

이 항목에서는 지연된 내구성이 있는 트랜잭션에 대해 자세히 설명합니다.This topic details delayed durable transactions.

완전 트랜잭션 내구성과 지연된 트랜잭션 내구성 비교Full vs. Delayed Transaction Durability

완전 트랜잭션 내구성과 지연된 트랜잭션 내구성은 모두 장단점이 있습니다.Both full and delayed transaction durability have their advantages and disadvantages. 응용 프로그램은 완전 내구성이 있는 트랜잭션과 지연된 내구성이 있는 트랜잭션을 혼합할 수 있습니다.An application can have a mix of fully and delayed durable transactions. 따라서 비즈니스 요구 사항과 각 트랜잭션이 이러한 요구 사항에 얼마나 적합한지를 신중하게 고려해야 합니다.You should carefully consider your business needs and how each fits into those needs.

완전 트랜잭션 내구성Full transaction durability

완전 내구성이 있는 트랜잭션은 클라이언트에 컨트롤을 반환하기 전에 디스크에 트랜잭션 로그를 기록합니다.Fully durable transactions write the transaction log to disk before returning control to the client. 다음과 같은 경우 완전 내구성이 있는 트랜잭션을 사용해야 합니다.You should use fully durable transactions whenever:

  • 시스템에서 데이터 손실을 허용할 수 없는 경우Your system cannot tolerate any data loss.
    데이터 일부를 손실할 수 있는 경우에 대한 자세한 내용은 데이터를 손실할 수는 경우 섹션을 참조하세요.See the section When can I lose data? for information on when you can lose some of your data.

  • 병목 현상의 원인이 트랜잭션 로그 쓰기 대기 시간이 아닌 경우The bottleneck is not due to transaction log write latency.

    지연된 트랜잭션 내구성은 트랜잭션 로그 레코드를 메모리에 유지하고 트랜잭션 로그에 일괄적으로 쓰기 때문에 I/O 작업이 더 적게 수행되므로 I/O 기록으로 인한 대기 시간이 줄어듭니다.Delayed transaction durability reduces the latency due to log I/O by keeping the transaction log records in memory and writing to the transaction log in batches, thus requiring fewer I/O operations. 지연된 트랜잭션 내구성은 로그 I/O 경합을 줄여서 시스템의 대기 시간을 단축할 수 있습니다.Delayed transaction durability potentially reduces log I/O contention, thus reducing waits in the system.

    완전 트랜잭션 내구성 보장Full Transaction Durability Guarantees

  • 트랜잭션 커밋에 성공하면 트랜잭션에 의한 변경 사항이 시스템의 다른 트랜잭션에 표시됩니다.Once transaction commit succeeds, the changes made by the transaction are visible to the other transactions in the system. 트랜잭션 격리 수준에 대한 자세한 내용은 SET TRANSACTION ISOLATION LEVEL(Transact-SQL) 또는 Transactions with Memory-Optimized Tables(메모리 액세스에 최적화된 테이블 트랜잭션)을 참조하세요.For more information about transaction isolation levels, see SET TRANSACTION ISOLATION LEVEL (Transact-SQL) or Transactions with Memory-Optimized Tables.

  • 내구성이 커밋에서 보장됩니다.Durability is guaranteed on commit. 트랜잭션 커밋이 성공하여 클라이언트에 컨트롤을 반환하기 이전에는 해당 로그 레코드가 디스크에 지속됩니다.Corresponding log records are persisted to disk before the transaction commit succeeds and returns control to the client.

지연된 트랜잭션 내구성Delayed transaction durability

지연된 트랜잭션 내구성은 디스크에 대한 비동기 로그 쓰기를 사용하여 수행됩니다.Delayed transaction durability is accomplished using asynchronous log writes to disk. 트랜잭션 로그 레코드는 버퍼에 유지되며 버퍼가 꽉 차거나 버퍼 플러시 이벤트가 발생하면 디스크에 기록됩니다.Transaction log records are kept in a buffer and written to disk when the buffer fills or a buffer flushing event takes place. 지연된 트랜잭션 내구성은 다음과 같은 이유로 시스템에서 대기 시간과 경합을 모두 줄입니다.Delayed transaction durability reduces both latency and contention within the system because:

  • 로그 IO를 완료하고 클라이언트에 컨트롤을 반환할 때까지 트랜잭션 커밋 처리가 지연되지 않습니다.The transaction commit processing does not wait for log IO to finish and return control to the client.

  • 동시 트랜잭션이 로그 IO를 경합할 가능성이 낮습니다. 대신 더 큰 청크로 구성된 디스크에 로그 버퍼를 플러시하여 경합을 줄이고 처리 속도를 높일 수 있습니다.Concurrent transactions are less likely to contend for log IO; instead, the log buffer can be flushed to disk in larger chunks, reducing contention, and increasing throughput.

    참고

    동시성이 높은 경우 특히, 로그 버퍼를 플러시 속도보다 더 빠르게 채울 경우 로그 I/O 경합이 여전히 발생할 수 있습니다.You may still have log I/O contention if there is a high degree of concurrency, particularly if you fill up the log buffer faster than you flush it.

    지연된 트랜잭션 내구성을 사용할 경우When to use delayed transaction durability

    지연된 트랜잭션 내구성을 사용하는 것이 유리한 경우는 다음과 같습니다.Some of the cases in which you could benefit from using delayed transaction durability are:

    약간의 데이터 손실을 허용할 수 있는 경우 You can tolerate some data loss.
    약간의 데이터 손실을 허용할 수 있는 경우(예: 대부분의 데이터를 보유하여 개별 데이터가 중요하지는 않은 경우)에는 지연된 내구성을 고려하는 것이 좋습니다.If you can tolerate some data loss, for example, where individual records are not critical as long as you have most of the data, then delayed durability may be worth considering. 데이터 손실을 허용할 수 없는 경우에는 지연된 트랜잭션 내구성을 사용하지 마세요.If you cannot tolerate any data loss, do not use delayed transaction durability.

    트랜잭션 로그 쓰기 중에 병목 현상이 발생하는 경우 You are experiencing a bottleneck on transaction log writes.
    트랜잭션 로그 쓰기의 지연으로 인해 성능 문제가 발생하는 경우 응용 프로그램에서 지연된 트랜잭션 내구성을 사용하는 것이 좋습니다.If your performance issues are due to latency in transaction log writes, your application will likely benefit from using delayed transaction durability.

    작업의 경합률이 높은 경우 Your workloads have a high contention rate.
    작업의 경합 수준이 높은 경우 잠금이 해제되는 동안 대기하는 데 많은 시간이 소요됩니다.If your system has workloads with a high contention level much time is lost waiting for locks to be released. 지연된 트랜잭션 내구성은 커밋 시간을 단축하여 잠금을 더 빠르게 해제하여 처리 속도를 높입니다.Delayed transaction durability reduces commit time and thus releases locks faster which results in higher throughput.

    지연된 트랜잭션 내구성 보장Delayed Transaction Durability Guarantees

  • 트랜잭션 커밋에 성공하면 트랜잭션에 의한 변경 사항이 시스템의 다른 트랜잭션에 표시됩니다.Once transaction commit succeeds, the changes made by the transaction are visible to the other transactions in the system.

  • 트랜잭션 내구성은 디스크에 메모리 내 트랜잭션 로그를 플러시한 경우에만 보장됩니다.Transaction durability is guaranteed only following a flush of the in-memory transaction log to disk. 메모리 내 트랜잭션 로그가 디스크에 플러시되는 경우는 다음과 같습니다.The in-memory transaction log is flushed to disk when:

    • 동일한 데이터베이스의 완전 내구성이 있는 트랜잭션이 데이터베이스에서 변경되고 성공적으로 커밋된 경우A fully durable transaction in the same database makes a change in the database and successfully commits.

    • 사용자가 시스템 저장 프로시저 sp_flush_log 를 성공적으로 실행한 경우The user executes the system stored procedure sp_flush_log successfully.

      완전 내구성이 있는 트랜잭션 또는 sp_flush_log가 성공적으로 커밋되면, 이전에 커밋된 지연된 내구성 트랜잭션은 모두 내구성을 가집니다.If a fully durable transaction or sp_flush_log successfully commits, all previously committed delayed durability transactions are guaranteed to have been made durable.

    • SQL ServerSQL Server 에서는 모든 트랜잭션이 지연되더라도 로그 생성 및 시간을 모두 기반으로 로그를 디스크에 플러시합니다. does attempt to flush the log to disk both based on log generation and on timing, even if all the transactions are delayed durable. 일반적으로 IO 장치가 계속 실행되면 정상으로 처리된 것입니다.This usually succeeds if the IO device is keeping up. 그러나 SQL ServerSQL Server 에서는 내구성 있는 트랜잭션 및 sp_flush_log 외의 어떠한 내구성도 보장하지 않습니다.However, SQL ServerSQL Server does not provide any hard durability guarantees other than durable transactions and sp_flush_log.

트랜잭션 내구성을 제어하는 방법How to control transaction durability

Database level control Database level control

DBA는 다음 문을 사용하여 사용자가 데이터베이스에서 지연된 트랜잭션 내구성을 사용할 수 있는지 여부를 제어할 수 있습니다.You, the DBA, can control whether users can use delayed transaction durability on a database with the following statement. ALTER DATABASE를 사용하여 지연된 내구성 설정을 지정해야 합니다.You must set the delayed durability setting with ALTER DATABASE.

ALTER DATABASE … SET DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }    

사용 안 함 DISABLED
[기본값] 이 설정을 사용하면 커밋 수준 설정(DELAYED_DURABILITY=[ON | OFF])에 상관없이 데이터베이스에 커밋된 모든 트랜잭션이 완전 내구성을 가집니다.[default] With this setting, all transactions that commit on the database are fully durable, regardless of the commit level setting (DELAYED_DURABILITY=[ON | OFF]). 저장 프로시저를 변경하고 다시 컴파일할 필요가 없습니다.There is no need for stored procedure change and recompilation. 따라서 지연된 내구성으로 인해 데이터가 위험에 노출되지 않습니다.This allows you to ensure that no data is ever put at risk by delayed durability.

허용함 ALLOWED
이 설정을 사용하면 각 트랜잭션의 내구성이 트랜잭션 수준에서 결정됩니다. 즉, DELAYED_DURABILITY = { OFF | ON }에 의해 결정됩니다.With this setting, each transaction’s durability is determined at the transaction level – DELAYED_DURABILITY = { OFF | ON }. 자세한 내용은 Atomic 블록 수준 제어 – 고유하게 컴파일된 저장 프로시저COMMIT 수준 제어 – Transact-SQL 을 참조하세요.See Atomic block level control – Natively Compiled Stored Procedures and COMMIT level control –Transact-SQL for more information.

FORCED FORCED
이 설정을 사용하면 데이터베이스에 커밋되는 모든 트랜잭션이 지연된 내구성을 가집니다.With this setting, every transaction that commits on the database is delayed durable. 트랜잭션이 완전 내구성(DELAYED_DURABILITY = OFF)을 지정하는지 여부에 상관없이 트랜잭션은 지연된 내구성이 있습니다.Whether the transaction specifies fully durable (DELAYED_DURABILITY = OFF) or makes no specification, the transaction is delayed durable. 이 설정은 지연된 트랜잭션 내구성이 데이터베이스에 유용하고 응용 프로그램 코드를 변경하지 않으려는 경우에 유용합니다.This setting is useful when delayed transaction durability is useful for a database and you do not want to change any application code.

Atomic block level control – Natively Compiled Stored Procedures Atomic block level control – Natively Compiled Stored Procedures

다음 코드는 ATOMIC 블록 내로 이동합니다.The following code goes inside the atomic block.

DELAYED_DURABILITY = { OFF | ON }    

OFF OFF
[기본값] DELAYED_DURABLITY = FORCED 데이터베이스 옵션을 적용하여 커밋이 비동기적이고 지연된 내구성을 갖는 경우를 제외하고 트랜잭션은 완전 내구성을 가집니다.[default] The transaction is fully durable, unless the database option DELAYED_DURABLITY = FORCED is in effect, in which case the commit is asynchronous and thus delayed durable. 자세한 내용은 Database level control 을 참조하세요.See Database level control for more information.

ON ON
DELAYED_DURABLITY = DISABLED 데이터베이스 옵션을 적용하여 커밋이 동기적이고 완전 내구성이 있는 경우를 제외하고 트랜잭션은 지연된 내구성을 가집니다.The transaction is delayed durable, unless the database option DELAYED_DURABLITY = DISABLED is in effect, in which case the commit is synchronous and thus fully durable. 자세한 내용은 Database level control 을 참조하세요.See Database level control for more information.

코드 예:Example Code:

CREATE PROCEDURE <procedureName> …    
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER    
AS BEGIN ATOMIC WITH     
(    
    DELAYED_DURABILITY = ON,    
    TRANSACTION ISOLATION LEVEL = SNAPSHOT,    
    LANGUAGE = N'English'    
    …    
)    
END    

테이블 1; ATOMIC 블록의 내구성Table 1: Durability in Atomic Blocks

ATOMIC 블록 내구성 옵션Atomic block durability option 기존 트랜잭션 없음No existing transaction 처리 중인 트랜잭션(완전 또는 지연된 내구성이 있음)Transaction in process (fully or delayed durable)
DELAYED_DURABILITY = OFFDELAYED_DURABILITY = OFF ATOMIC 블록은 새로운 완전 내구성이 있는 트랜잭션을 시작합니다.Atomic block starts a new fully durable transaction. ATOMIC 블록은 기존 트랜잭션에 저장점을 만든 다음 새 트랜잭션을 시작합니다.Atomic block creates a save point in the existing transaction, then begins the new transaction.
DELAYED_DURABILITY = ONDELAYED_DURABILITY = ON ATOMIC 블록은 새로운 지연된 내구성이 있는 트랜잭션을 시작합니다.Atomic block starts a new delayed durable transaction. ATOMIC 블록은 기존 트랜잭션에 저장점을 만든 다음 새 트랜잭션을 시작합니다.Atomic block creates a save point in the existing transaction, then begins the new transaction.

COMMIT level control – Transact-SQLTransact-SQL COMMIT level control – Transact-SQLTransact-SQL

지연된 트랜잭션 내구성을 강제로 적용할 수 있도록 COMMIT 구문이 확장됩니다.The COMMIT syntax is extended so you can force delayed transaction durability. 데이터베이스 수준에서 If DELAYED_DURABILITY가 DISABLED 또는 FORCED인 경우(위 내용 참조) 이 COMMIT 옵션은 무시됩니다.If DELAYED_DURABILITY is DISABLED or FORCED at the database level (see above) this COMMIT option is ignored.

COMMIT [ { TRAN | TRANSACTION } ] [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]    

OFF OFF
[기본값] DELAYED_DURABLITY = FORCED 데이터베이스 옵션을 적용하여 COMMIT이 비동기적이고 지연된 내구성을 갖는 경우를 제외하고 COMMIT 트랜잭션은 완전 내구성을 가집니다.[default] The transaction COMMIT is fully durable, unless the database option DELAYED_DURABLITY = FORCED is in effect, in which case the COMMIT is asynchronous and thus delayed durable. 자세한 내용은 Database level control 을 참조하세요.See Database level control for more information.

ON ON
DELAYED_DURABLITY = DISABLED 데이터베이스 옵션을 적용하여 COMMIT이 동기적이고 완전 내구성이 있는 경우를 제외하고 COMMIT 트랜잭션은 지연된 내구성을 가집니다.The transaction COMMIT is delayed durable, unless the database option DELAYED_DURABLITY = DISABLED is in effect, in which case the COMMIT is synchronous and thus fully durable. 자세한 내용은 Database level control 을 참조하세요.See Database level control for more information.

옵션 및 상호 작용 요약Summary of options and their interactions

이 표에서는 데이터베이스 수준 지연된 내구성 설정과 커밋 수준 설정 사이의 상호 작용을 요약합니다.This table summarizes the interactions between database level delayed durability settings and commit level settings. 데이터베이스 수준 설정이 커밋 수준 설정보다 항상 우선합니다.Database level settings always take precedence over commit level settings.

COMMIT 설정/데이터베이스 설정COMMIT setting/Database setting DELAYED_DURABILITY = DISABLEDDELAYED_DURABILITY = DISABLED DELAYED_DURABILITY = ALLOWEDDELAYED_DURABILITY = ALLOWED DELAYED_DURABILITY = FORCEDDELAYED_DURABILITY = FORCED
DELAYED_DURABILITY = OFF 데이터베이스 수준 트랜잭션DELAYED_DURABILITY = OFF Database level transactions. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 지연된 내구성을 가집니다.Transaction is delayed durable.
DELAYED_DURABILITY = ON 데이터베이스 수준 트랜잭션DELAYED_DURABILITY = ON Database level transactions. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 지연된 내구성을 가집니다.Transaction is delayed durable. 트랜잭션이 지연된 내구성을 가집니다.Transaction is delayed durable.
DELAYED_DURABILITY = OFF 데이터베이스 간 트랜잭션 또는 분산 트랜잭션DELAYED_DURABILITY = OFF Cross database or distributed transaction. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable.
DELAYED_DURABILITY = ON 데이터베이스 간 트랜잭션 또는 분산 트랜잭션DELAYED_DURABILITY = ON Cross database or distributed transaction. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable. 트랜잭션이 완전 내구성을 가집니다.Transaction is fully durable.

트랜잭션 로그를 강제로 플러시하는 방법How to force a transaction log flush

디스크에 트랜잭션 로그를 강제로 플러시하는 두 가지 방법이 있습니다.There are two means to force flush the transaction log to disk.

  • 동일한 데이터베이스를 변경하는 완전 내구성이 있는 트랜잭션을 실행합니다.Execute any fully durable transaction that alters the same database. 이렇게 하면 모든 이전에 커밋된 지연된 내구성 트랜잭션의 로그 레코드가 디스크에 강제로 플러시됩니다.This forces a flush of the log records of all preceding committed delayed durability transactions to disk.

  • 시스템 저장 프로시저 실행 sp_flush_log를 실행합니다.Execute the system stored procedure sp_flush_log. 이 프로시저는 모든 이전에 커밋된 지연된 내구성이 있는 트랜잭션의 로그 레코드를 디스크에 강제로 플러시합니다.This procedure forces a flush of the log records of all preceding committed delayed durable transactions to disk. 자세한 내용은 sys.sp_flush_log(Transact-SQL)를 참조하세요.For more information see sys.sp_flush_log (Transact-SQL).

지연된 내구성 및 기타 SQL ServerSQL Server 기능 Delayed durability and other SQL ServerSQL Server features

변경 추적 및 변경 데이터 캡처 Change tracking and change data capture
변경 추적을 적용한 모든 트랜잭션은 완전 내구성을 가집니다.All transactions with change tracking are fully durable. 변경 추적을 사용하도록 설정한 테이블에 쓰기 작업을 수행하는 경우 트랜잭션은 변경 추적 속성이 있습니다.A transaction has the change tracking property if it does any write operations to tables that are enabled for change tracking. 지연된 내구성 사용은 CDC(변경 데이터 캡처)를 사용하는 데이터베이스에 지원되지 않습니다.The use of delayed durability is not supported for databases which use change data capture (CDC).

충돌 복구 Crash recovery
일관성이 보장되지만 커밋된 지연된 내구성이 있는 트랜잭션에서 변경된 일부 항목이 손실될 수 있습니다.Consistency is guaranteed, but some changes from delayed durable transactions that have committed may be lost.

데이터베이스 간 및 DTC Cross-database and DTC
데이터베이스 또는 트랜잭션 커밋 설정에 상관없이 데이터베이스 간 트랜잭션 또는 분산 트랜잭션인 경우 트랜잭션은 완전 내구성을 가집니다.If a transaction is cross-database or distributed, it is fully durable, regardless of any database or transaction commit setting.

AlwaysOn 가용성 그룹 및 미러링 Always On Availability Groups and Mirroring
지연된 내구성이 있는 트랜잭션은 기본 또는 보조 데이터베이스에서 내구성을 보장하지 않습니다.Delayed durable transactions do not guarantee any durability on either the primary or any of the secondaries. 또한 보조 데이터베이스에서 트랜잭션에 대한 정보를 보장하지 않습니다.In addition, they do not guarantee any knowledge about the transaction at the secondary. 제어는 커밋 후 동기 보조 데이터베이스에서 승인이 수신되기 이전에 클라이언트에 반환됩니다.After commit, control is returned to the client before any acknowledgement is received from any synchronous secondary. 기본 복제본의 디스크로 플러시될 때 보조 복제본으로 계속 복제됩니다.Replication to secondary replicas does continue to happen as flush to disk on the primary happens.

장애 조치(Failover) 클러스터링 Failover clustering
일부 지연된 내구성이 있는 트랜잭션 쓰기가 손실될 수 있습니다.Some delayed durable transaction writes might be lost.

트랜잭션 복제 Transaction Replication
지연된 내구성이 있는 트랜잭션은 트랜잭션 복제에서 지원되지 않습니다.Delayed durable transactions is not supported with Transactional Replication.

로그 전달 Log shipping
내구성이 있는 트랜잭션만 발송되는 로그에 포함됩니다.Only transactions that have been made durable are included in the log that is shipped.

로그 백업 Log Backup
내구성이 있는 트랜잭션만 백업에 포함됩니다.Only transactions that have been made durable are included in the backup.

When can I lose data? When can I lose data?

테이블에 대해 지연된 내구성을 구현하는 경우 특정 상황에서 데이터를 손실할 수 있습니다.If you implement delayed durability on any of your tables, you should understand that certain circumstances can lead to data loss. 데이터 손실을 허용할 수 없는 경우에는 지연된 트랜잭션 내구성을 사용하지 마세요.If you cannot tolerate any data loss, you should not use delayed durability on your tables.

재해Catastrophic events

서버 크래시와 같은 재해 발생 시 디스크에 저장되지 않은 커밋된 모든 트랜잭션의 데이터를 손실하게 됩니다.In the case of a catastrophic event, like a server crash, you will lose the data for all committed transactions that have not been saved to disk. 데이터베이스의 테이블에 대해 완전 내구성이 있는 트랜잭션이 실행되거나 sp_flush_log 가 호출될 때마다 지연된 내구성 트랜잭션이 디스크에 저장됩니다.Delayed durable transactions are saved to disk whenever a fully durable transaction is executed against any table (durable memory-optimized or disk-based) in the database, or sp_flush_log is called. 지연된 내구성 트랜잭션을 사용하는 경우 데이터베이스에 정기적으로 sp_flush_log 를 업데이트하거나 호출할 수 있는 작은 테이블을 만들어 처리되지 않은 커밋된 모든 트랜잭션을 저장할 수 있습니다.If you are using delayed durable transactions, you may want to create a small table in the database that you can periodically update or periodically call sp_flush_log to save all outstanding committed transactions. 또한 가득 찰 때마다 트랜잭션 로그가 플러시되지만 이는 예측하기 어려워 제어하는 것이 불가능합니다.The transaction log also flushes whenever it becomes full, but that is hard to predict and impossible to control.

SQL ServerSQL Server 종료 및 다시 시작 shutdown and restart

지연된 내구성의 경우 SQL ServerSQL Server의 예기치 않은 종료와 예상된 종료/다시 시작 간에는 차이가 없습니다.For delayed durability, there is no difference between an unexpected shutdown and an expected shutdown/restart of SQL ServerSQL Server. 재해와 같은 데이터 손실을 대비하여 계획을 세워야 합니다.Like catastrophic events, you should plan for data loss. 예정된 종료/다시 시작에서 디스크에 기록되지 않은 일부 트랜잭션이 먼저 디스크에 저장될 수 있지만 이에 대한 계획을 세우지 않아야 합니다.In a planned shutdown/restart some transactions that have not been written to disk may first be saved to disk, but you should not plan on it. 예정되었든 예정되지 않았든 종료/다시 시작 시 재해와 동일하게 데이터를 손실할 것처럼 계획을 세우세요.Plan as though a shutdown/restart, whether planned or unplanned, loses the data the same as a catastrophic event.

참고 항목See Also

메모리 액세스에 최적화된 테이블의 트랜잭션Transactions with Memory-Optimized Tables