유틸리티 또는 CPU 주기를 변경할 기술을 사용할 때 SQL Server 타이밍 값을 올바르지 않을 수 있습니다.

기술 자료 번역 기술 자료 번역
기술 자료: 931279 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft SQL Server 2005 고해상도 CPU 카운터를 사용하여 microsecond 타이밍 기능을 제공합니다. 한 microsecond 한 millionth 초 (또는 한 1/1000의 있는 밀리초) 입니다. 그러나 SQL Server 타이밍 값을 CPU 주기를 변경할 기술을 사용하는 경우 잘못되었을 수 있습니다. 예를 들어, 다음과 같은 기술을 사용하면 이 문제가 발생할 수 있습니다.
  • CPU 단계별 실행
  • AMD Cool'n ' 기술을 Quiet
  • 다양한 전원 구성표
이 문서에서는 메서드와 이 문제를 해결하려면 데 도움이 되는 추가 정보가 포함되어 있습니다.

현상

SET STATISTICS TIME 문을 사용하여 서버 실행과 구문 분석, 컴파일 시간을 표시할 때 잘못된 값을 얻을 수 있습니다. 예를 들어, SQL Server 실행 시간 경과 시간을 CPU 시간 보다 훨씬 많은 있음을 알 수 있습니다. 이 문제는 성능 튜닝 정확성에 영향을 줄 수 있습니다. 이 문제는 나열된 기술 중 하나를 서버의 "요약" 절에 사용할 때 발생합니다.

원인

이러한 기술을 사용할 때 CPU 주기가 변경되었기 때문에 이 문제가 발생합니다. SQL Server 2005 고해상도 CPU 카운터를 사용하여 microsecond 타이밍 기능을 제공합니다. 에너지 절약하기 열 출력 줄일 수 있도록 CPU 주기가 변경되면 계산된 기간 잘못되었을 수 있습니다.

해결 방법

서비스 팩 정보

이 문제를 해결하려면 SQL Server 2005 최신 서비스 팩을 구하십시오. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
913089SQL Server 2005 최신 서비스 팩을 구하는 방법
참고 SQL Server 2005 서비스 팩 3 및 최신 서비스 팩에는 프로세서 시간 스탬프가 사용되지 않습니다. 이러한 버전의 SQL Server 2005 1밀리초 최대 정밀도를 갖는 보다 안정적인 타이머를 사용합니다.

현재 상태

이 문제는 SQL Server 2005 서비스 팩 3에서 처음 해결되었습니다.

해결 과정

SQL Server 2005 알려진 및 안정적인 데이터 요소를 정확한 성능 조정을 수행할 수 있어야 합니다. 모니터링하고 SQL Server 성능 조정하기 전에 CPU 꾸준히 주파수 비율을 유지하는 있으므로 동적 CPU 빈도 조정 컴퓨터에 설정되어 있는 경우 해제할 수 있습니다. 이렇게 하려면 다음 방법을 사용하십시오.

최대 빈도로 남아 CPU 강제로 컴퓨터에서 전원 구성표 구성

이렇게 하려면 다음과 같이 하십시오.
  1. 시작 을 누르고, 실행 을, Powercfg.cpl 을 입력한 다음 확인 을 누릅니다.
  2. 전원 옵션 등록 정보 대화 상자에서 항상 켜기전원 구성표 목록에서 클릭하십시오.
  3. 확인 을 클릭하십시오.
한 드리프트 발생할 수 있습니다. 한 드리프트 CPU 주기 값 사이의 차이를 것입니다. 자세한 내용은 "드리프트" 절을 참조하십시오. 이 경우 전원 구성표를 변경하면 모든 CPU 주기를 다시 동기화하려면 Microsoft Windows를 다시 시작해야 합니다.

컴퓨터를 다시 시작할 수 없는 경우 SQL Server 프로세서 선호도를 SQL Server 작업자 스레드 사이에 CPU를 이동하지 못하게 할 수 있습니다. 이렇게 하면 CPU 주기 값 사이의 차이를 발생하는 경우에도 컴퓨터를 다시 시작할 필요가 없습니다. 서버의 모든 CPU SQL Server 프로세서 선호도 사용하려면 서버에 있는 논리 프로세서의 수에 따라 다른 마스크를 사용해야 합니다.

다음 표에서는 예제 시나리오를 보여 줍니다.
표 축소표 확대
CPU 번호프로세서 선호도 사용하려면 문
02 CPUexec sp_configure 0x00000003 ' 선호도 마스크'
이동
다시 구성
이동
04 CPUexec sp_configure '선호도 마스크', 0x0000000F
이동
다시 구성
이동
08 CPUexec sp_configure '선호도 마스크', 0x000000FF
이동
다시 구성
이동
16개의 CPUexec sp_configure 0x0000FFFF ' 선호도 마스크'
이동
다시 구성
이동
32 CPUexec sp_configure 0xFFFFFFFF ' 선호도 마스크'
이동
다시 구성
이동
참고 BIOS 수준에서 CPU 주기를 변형 기능을 비활성화하려면 부족할 수 있습니다. 다양한 타사 유틸리티 CPU 주기를 변경할 수 있습니다. CPU에서 최대 전원 구성표 설정을 경우에도 일부 구현에서는 빈도 조정을 사용합니다. 이 경우 성능 SQL Server 2005에서 조정을 수행하면 이러한 타사 유틸리티를 사용하지 않도록 합니다.

타사 유틸리티 및 드라이버를 CPU 주기 및 CPU 클럭 카운터를 동기화할 수 있습니다.

가끔 시스템 CPU 주기를 문제를 해결하는 데 제조업체의 업데이트가 필요할 수 있습니다. 시스템에 최신 마이크로코드, BIOS 및 펌웨어 업데이트를 확인하려면 시스템에 문제가 있을 수 의심되는 경우 가장 좋습니다.

추가 정보

Microsoft SQL Server 2000 및 이전 버전의 SQL Server에서는 Windows 타이밍 메커니즘을 사용합니다. 타이밍 메커니즘이 밀리초로 정밀도 값을 사용합니다. 일반적으로 이 정밀도 10-15 ms. 있지만, 정밀도 55 ms 같이 큰 수 있습니다. SQL Server 쿼리의 한 자리 밀리초 내에 자주 완료하거나 microsecond 시간에 걸쳐. 이 정밀도 고해상도 타이머가 필요합니다. 따라서 이러한 버전의 SQL Server 보고서의 일부 쿼리는 기간은 0 ms. Therefore 같이 성능 모니터링 및 이전 버전의 SQL Server에서 SQL Server 성능 조정 어렵습니다.

SQL Server 2005 microsecond 타이밍 기능을 제공하기 위해 고해상도 CPU 카운터의 정확도가 향상됩니다. "요약" 절에 나와 있는 기술을 사용할 경우 보고된 타이밍 값이 잘못되었을 수 있습니다.

이 문제는 다음과 같은 개체 및 기능에 영향을 줄 수 있습니다.
  • 이벤트 추적:
    • 주의 이벤트
    • 저장 프로시저 노드 이벤트
    • TSQL 노드의 이벤트
    • 이벤트 개체 노드
    • 트랜잭션 노드의 이벤트
  • 동적 관리 뷰:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • SET STATISTICS TIME 문
  • sysprocesses 시스템 테이블
SQL Server 2005 서비스 팩 2 (SP2)를 설치하면 SQL Server 고해상도 타이머가 동기화되어 사이에 CPU 수 있음을 감지하면 SQL Server 오류 로그에 있는 오류 메시지를 기록합니다. 오류 메시지는 성능 타이밍을 정확한 않을 수 있으며 사용자는 성능 데이터를 주의하여 사용해야 나타냅니다.

오류 메시지의 텍스트가 다음 오류 메시지 중 하나와 유사한:
오류 메시지 1
CPU 시간 스탬프 카운터 스케줄러 id 2에 다른 CPU는 동기화되지 않습니다.
오류 메시지 2
CPU 시간 스탬프를 빈도 에서 191469 1794177 틱 당 밀리초 변경되었습니다. 새 빈도가 사용됩니다.
SQL Server 64 비트 CPU 눈금 수를 얻도록 RDTSC (실시간 스탬프 카운터) 명령을 사용합니다. 이 값은 밀리초 값으로 값을 변환할 CPU 주기를 기준으로 나눌 수 있습니다. 타이밍 변형을 CPU 빈도 변경 또는 드리프트 발생할 때 발생할 수 있습니다.

CPU 단계별 실행

CPU 단계별로 CPU 주기를 의도적인 변경될 때 정의됩니다. CPU 단계별로 또한 Intel SpeedStep 기술 또는 AMD PowerNow 같이 알 수 있습니다! 기술입니다. 때 CPU 단계별 실행, CPU 속도 있습니다 늘리거나 같이 50 에너지 절약하기 열 출력 줄일 수 있도록 MHz 작은 단위로 발생합니다. 같은 비 균일 메모리 액세스 (NUMA) 노드 내에 있는 CPU 주기를 독립적으로 조정되지 않습니다.

다음 표에서는 CPU 단계별로 변경 타이밍 계산을 어떻게 영향을 보여 줍니다.
표 축소표 확대
동작RDTSC 눈금틱 당 밀리초 (빈도)시간 벽
파일 시작12000
아래로 주기 단계2001001ms
최종 배치5003ms
합계5004ms
SQL Server 시작 및 끝 RDTSC 틱 시 RDTSC 틱을 캡처합니다. 그런 다음 SQL Server는 틱 빈도 값으로 나눕니다.

빈도 값은 200 또는 100 사용할 때 이 예제에서 다음 타이밍 계산을 발생합니다.
  • 200 빈도 200: 500 2.5 = 밀리초
  • 빈도 100: 500/100 = 5 밀리초
시간 계산 중 어떤 것도 4 ms 실제 벽 클럭 시간이 일치합니다.

이 계산에 사용된 경우, RPC: 완료 추적 이벤트, 기간종료 시간 을 데이터 열을 잘못 보고됩니다. 해당 RPC: 완료 시작 벽 클럭 시간이 이벤트를 캡처하고 CPU 수가 Tick. SQL Server 에서 데이터 열이 SQL Server 2005, 기간종료 시간 을 Windows 제공하는 것보다 높은 해상도를 타이밍 얻으려면 경과된 CPU 눈금 수를 사용하여 추적이 계산됩니다. 끝 시간 열은 기간 열에 시작 시간 열을 추가하여 계산됩니다. 이 예제에서는 끝 시간 열은 잘못 2.5 밀리초 또는 5 밀리초 시작 시간을 추가하여 계산됩니다.

드리프트

드리프트 CPU 클럭 값의 차이를 것입니다. CPU가 여러 개 있는 시스템에만 있는 시간 같은 지점에 대한 다른 CPU 클럭 값을 생성할 수 있습니다. 일반적인 것은 아니지만 CPU 클럭 구분을 시간이 지남에 따라 발생할 수 있습니다.

다음 예제에서는 SQL Server 추적 기간 데이터 열에 결과를 드리프트 변경 내용을 어떻게 달라지는지 보여 줍니다. CPU 주기를 200 틱 당 밀리초 시 일정한 상태로 가정합니다. 다음 표는 이 시나리오에서 이벤트를 보여 줍니다.
표 축소표 확대
동작Windows 예약된 CPUCPU 1 RDTSCCPU 2 RDTSC시간 벽
파일 시작110011000
최종 배치290019004 밀리초
합계4 밀리초
SQL Server 시작 지점과 끝 지점을 시 RDTSC 틱을 캡처합니다. 그런 다음 SQL Server RDTSC 틱 빈도 값으로 나눕니다. 이 예제에서는 두 개의 다른 CPU SQL Server 작업자 스레드에서 Windows 일정이. 일괄 서비스 SQL Server 작업자 스레드가 먼저 첫 번째 CPU (CPU 1) 실행했습니다.

그러나 일부 지점에서 일괄 처리 실행이 중단되어 SQL Server 일괄 처리 실행이 보류 대기열로 보낸. 이 일괄 처리 실행 가능 큐로 다시 서비스를 SQL Server 작업자 스레드는 SQL Server 보낼 때 Windows (CPU 2) 두 번째 CPU에서 실행할 스레드가 발송되었습니다. SQL Server 작업자 스레드가 CPU 2 실행되지 완료되었습니다. CPU 드리프트 인해 CPU 2에서 캡처된 최종 틱 값이 900 대신 1900 않습니다. SQL Server 프로세서 선호도를 사용하면 이 동작을 방지할 수 있습니다.

이 예제에서는 다음 타이밍 계산에 사용됩니다.
  • 있지만 잘못된 값을 보고했습니다: (1900 100 = 1800)/200 = 9 밀리초
  • 값을 수정하십시오: (900 100 = 800)/200 = 4 밀리초
기간 열에 대해 값을 사용하여 RPC: 완료 이 결과는 4 ms. 대신 9 ms 두 개 이상의 4 ms 올바른 값을 두 번 같이 이벤트 보고됩니다.

SQL Server 앞에서 설명한 성능 출력을 신뢰할 수 없다는 나타내려면 2005로 드리프트 경고 메시지는 추가할 수 있습니다. 적용되지 않은 경우에 SQL Server 2005 SP2의 경고 메시지에 대한 다음 보고할 수 있습니다.
  • false 드리프트 경고 메시지
  • 드리프트 현저하게 시스템 효과를 일으키는 없이 밀리초 수십 될 수 있습니다.
사용자가 성능 관련 출력을 평가할 때 및 성능 관련 출력에 벽 클럭 타이밍 비교할 때 주의해야 합니다. 다른 성능 문제가 없는 기호 경우 일반적으로 드리프트 경고 메시지를 무시할 수 있습니다. 예를 들어, 다음과 같은 상황에서 드리프트 경고 메시지는 일반적으로 무시할 수 있습니다.
  • 프로세스가 예상대로 실행 중입니다.
  • SQL Server 쿼리의 이상한 durational 패턴이 실행되고 있지 않습니다.
  • 다른 병목 현상 기호는 표시되지 않습니다.
그러나 알려진 RDTSC 문제가 있는지 제조업체에 문의하는 것이 좋습니다 경고 메시지를, 드리프트 무시 전에 존재합니다.

(?T8033) 8033과 추적 플래그 보고 동작을 SQL Server 2005의 최초 릴리스 버전 및 SQL Server 2005 SP1 반환할 수 있습니다. 최초 릴리스 버전의 SQL Server 2005와 SQL Server 2005 SP1 드리프트 경고 메시지를 보고하지 않습니다. 원래 릴리스 버전의 SQL Server 2005 또는 SQL Server 2005 SP1 문제 없이 실행 중인 경우 메시지는 대개 무시할 수 있습니다.

WAITFOR DELAY 문을 제대로 작동하는 이유는 무엇입니까? 정기적인 시스템 프로세스를 어떻습니까?

시간 제한 메커니즘은 고해상도 설계에 영향을 받지 않습니다. SQL Server 고해상도 타이머를 타이머 기반 작업을 사용하지 않습니다. 일부 제한 시간 작업 GetTickCount 함수를 감소 해상도의 타이머는 기반으로 합니다. 이러한 제한 시간 작업 잠금 제한 시간, DELAY WAITFOR 문을 교착 상태 감지 등이 있습니다.
자세한 내용은 Microsoft 기술 자료에 있는 문서를 보려면 다음 문서 번호를 클릭하시기 바랍니다:
938448서버에 듀얼 코어 Opteron AMD 프로세서 또는 다중 프로세서 Opteron AMD 프로세서를 사용하는 경우 Windows Server 2003 기반 서버에서 시간 스탬프 카운터 드리프트 발생할 수 있습니다.
895980Windows Server 2003 및 Windows XP에서 QueryPerformanceCounter 함수를 사용하는 프로그램을 제대로 수행할 수 있습니다.
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이러한 제품의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

속성

기술 자료: 931279 - 마지막 검토: 2008년 12월 16일 화요일 - 수정: 7.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
키워드:?
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com