다음을 통해 공유


SQL Server 성능

다중 사이트 계층 구조에서 Configuration Manager SQL Server 복제를 사용하여 사이트 간에 데이터를 전송합니다. 자세한 내용은 데이터베이스 복제를 참조하세요.

다음 다이어그램을 사용하여 복제 상태에 영향을 미칠 수 있는 SQL Server 성능 문제 해결을 시작합니다.

SQL Server 성능 문제를 해결하는 다이어그램

쿼리

이 다이어그램은 다음 쿼리를 사용합니다.

SQL Server 변경 내용 추적 테이블이 정리되었는지 확인합니다.

DECLARE @RetentionUnit INT = 0;
DECLARE @RetentionPeriod INT = 0;
DECLARE @CTCutOffTime DATETIME;
DECLARE @CTMinTime DATETIME;

SELECT @RetentionPeriod=retention_period,  
    @RetentionUnit=retention_period_units  
FROM sys.change_tracking_databases  
WHERE database_id = DB_ID();

IF @RetentionUnit = 1
    SET @CTCutOffTime = DATEADD(MINUTE,-@RetentionPeriod,GETUTCDATE())
ELSE IF @RetentionUnit = 2
    SET @CTCutOffTime = DATEADD(HOUR,-@RetentionPeriod,GETUTCDATE())
ELSE IF @RetentionUnit = 3
    SET @CTCutOffTime = DATEADD(DAY,-@RetentionPeriod,GETUTCDATE())

-- give a buffer of two days
SET @CTCutOffTime = DATEADD(DAY, -2, @CTCutOffTime)
select top 1 @CTMinTime=commit_time from sys.dm_tran_commit_table order by commit_ts asc
IF @CTMinTime < @CTCutOffTime
    PRINT 'there is change tracking backlog, please contact Microsoft support'

SQL Server service broker 메시지를 처리하는 현재 세션 변경이 차단됨

select
       req.session_id
       ,req.blocking_session_id
       ,req.last_wait_type
       ,req.wait_type
       ,req.wait_resource
       ,t.text
from sys.dm_exec_sessions s
inner join sys.dm_exec_requests req on s.Session_id=req.session_id
cross apply sys.dm_exec_sql_text(sql_handle) t
where program_name='SMS_data_replication_service'

너무 많은 메모리를 요구하는 세션 확인

SELECT * FROM sys.dm_exec_query_memory_grants
ORDER BY requested_memory_kb DESC

너무 많은 잠금을 사용하는 세션 확인

SELECT TOP 10 request_session_id,
program_name = (SELECT program_name FROM sys.dm_exec_sessions WHERE session_id=request_session_id),
COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id
ORDER BY count (*) DESC

참고 항목

SQL Server 구성