SQL Server 성능
다중 사이트 계층 구조에서 Configuration Manager 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