쿼리를 실행하는 SQL Server 2005의 TokenAndPermUserStore 캐시 크기를 커질 경우 완료하는 데 시간이 오래 걸릴

기술 자료 번역 기술 자료 번역
기술 자료: 927396 - 이 문서가 적용되는 제품 보기.
# 버그: 429501 (SQLBUDT)
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft SQL Server 2005에서 다음과 같은 현상이 나타날 수 있습니다.
  • 일반적으로 더 빨리 실행할 쿼리 실행이 완료되는 데 시간이 더 걸릴.
  • SQL Server 프로세스의 CPU 사용률이 일반적인 두 개 이상 있습니다.
  • 임의 쿼리를 실행할 때 성능이 저하될 경우, sys.dm_exec_requests 또는 sys.dm_os_waiting_tasks 동적 관리 뷰 쿼리에서 볼 수 있습니다. 그러나 쿼리가 모든 리소스를 기다리는 나타나지 않습니다.
  • TokenAndPermUserStore 캐시 저장소 크기를 일정한 비율로 증가합니다.
  • TokenAndPermUserStore 캐시 저장소를 여러 수백 순으로 크기입니다 (MB) 입니다.
  • 경우에 따라서는 임시 릴리프를 DBCC FREEPROCCACHE 명령 실행을 제공합니다.
TokenAndPermUserStore 캐시 크기를 모니터링하려면 다음과 유사한 쿼리를 사용할 수 있습니다:
SELECT SUM(single_pages_kb + multi_pages_kb) AS 
   "CurrentSizeOfTokenCache(kb)" 
   FROM sys.dm_os_memory_clerks 
   WHERE name = 'TokenAndPermUserStore'

원인

TokenAndPermUserStore 캐시 저장소를 folllowing 보안 토큰 형식을 유지 관리합니다.
  • LoginToken
  • TokenPerm
  • UserToken
  • SecContextToken
  • TokenAccessResult입니다.
다른 클래스의 TokenAccessResult 항목이 있을 수도 있습니다. 클래스가 65535 사이의 TokenAccessResult 항목이 있는 때문에 이러한 특정 문제가 발생합니다.

높은 비율의 임의의 동적 쿼리 실행 가진 SQL Server의 인스턴스에 대한 sys.dm_os_memory_cache_entries 보기에서 65535 사이의 클래스를 TokenAccessResult 항목이 많은 알 수 있습니다. 특수 캐시 항목을 65535 클래스를 TokenAccessResult 항목을 나타냅니다. 이러한 캐시 항목이 쿼리에 대한 누적 권한 검사가 사용됩니다. 예를 들어, 다음 쿼리를 실행할 수 있습니다:
select * 
from t1 join t2 join t3
이 경우 SQL Server는 이 쿼리에 대한 누적 권한 검사를 계산합니다. 이 검사는 사용자가 t1, t2, t3 선택 포함할지 여부를 결정합니다. 이러한 누적 권한 검사 결과를 TokenAccessResult 들어갈 포함되고 65535 ID가 TokenAndPermUserStore 캐시 저장소가 삽입됩니다. SQL Server 같은 사용자가 다시 또는 여러 번이 이 쿼리를 실행하는 경우 한 번 TokenAccessResult 캐시 항목이 다시 사용합니다.

이 캐시 저장소를 증가하면 기존 항목을 다시 검색하려면 시간이 증가합니다. 스레드가 하나만 검색을 수행할 수 있도록 이 캐시에 대한 액세스가 제어됩니다. 이 동작을 결국 원인은 줄이려면 성능 쿼리 및 더 많은 CPU 사용률이 발생합니다.

해결 방법

서비스 팩 정보

이 문제를 해결하려면 SQL Server 2005 최신 서비스 팩을 구하십시오. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
913089SQL Server 2005 최신 서비스 팩을 구하는 방법
이 문제를 해결하려면 SQL Server 2005 서비스 팩 2를 권한 토큰 캐싱 동작을 변경합니다. 특정 임시 쿼리가 다시 실행될 때 기본적으로 임의(Ad-hoc) 쿼리 TokenAccessResult 보안 캐시 엔트리는 경우에만 캐시됩니다.

해결 과정

이 문제를 해결하려면 다음 방법 중 하나 이상을 수행하십시오.
  • 명시적으로 임의(Ad-hoc) 쿼리를 매개 변수화할 수 있습니다.

    슬라이드 노트
    • 이 메서드는 효과적으로 임의 쿼리 및 해당 계획을 다시 사용할 수 있습니다.
    • 이 메서드를 사용하면 다른 매개 변수와 함께 임의(Ad-hoc) 쿼리를 실행할 때마다 TokenAccessResult 항목을 만들 필요가 없습니다.
    • 이 방법을 사용하면 적절한 제한에서 캐시에 남아 TokenAndPermUserStore 크기.
  • 저장된 프로시저 내에서 임시 쿼리를 래핑하고 임의(Ad-hoc) 쿼리를 직접 실행하는 대신 저장된 프로시저를 사용하십시오.

    슬라이드 노트
    • 저장된 프로시저에 있는 문의 실행 계획이 캐시됩니다.
    • TokenAccessResult 항목이 각 문에 대한 실행 계획 항목과 연결되지 않습니다.
    • 이 실행 계획을 프로시저를 계속 캐시에 저장된 아니라, 모든 저장 프로시저의 실행을 효과적으로 TokenAccessResult 항목을 다시 사용합니다. 따라서 새 TokenAccessResult 만들 필요가 없는 항목을.
  • FORCE_PARAMETERIZATION 데이터베이스 옵션을 설정하십시오.

    슬라이드 노트
    • 이 메서드는 효과적으로 임의 쿼리 및 해당 계획을 다시 사용할 수 있습니다.
    • 이 메서드를 사용하면 다른 매개 변수와 함께 임의(Ad-hoc) 쿼리를 실행할 때마다 TokenAccessResult 항목을 만들 필요가 없습니다.
    • 이 방법을 사용하면 적절한 제한에서 캐시에 남아 TokenAndPermUserStore 크기.
  • sysadmin 서버 그룹의 구성원으로 임의(Ad-hoc) 쿼리를 실행하는 로그인 다양한 추가하십시오.

    슬라이드 노트
    • sysadmin 서버 그룹의 구성원으로 있는 로그인의 쿼리를 실행할 때 TokenAccessResult 항목에 대한 임시 쿼리는 경우에만 만들어집니다.
    • 이 동작을 TokenAccessResult 항목을 만들어지기 때문에 TokenAndPermUserStore 캐시 크기는 관리 가능한 크기로 유지합니다.
  • TokenAndPermUserStore 캐시 플러시 항목이입니다.

    슬라이드 노트
    • 이렇게 하려면 다음 명령을 실행하십시오.
      DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
    • 이상적으로는 문제가 나타나는 시작하면 TokenAndPermUserStore 캐시 크기 임계값을 감시할 보십시오.
    • 다음과 같은 작업을 수행하는 예약된 SQL Server 에이전트 작업을 만들 수 있습니다.
      • TokenAndPermUserStore 캐시 크기를 확인하십시오. 이렇게 하려면 다음 명령을 실행하여:
        SELECT SUM(single_pages_kb + multi_pages_kb) AS 
           "CurrentSizeOfTokenCache(kb)" 
           FROM sys.dm_os_memory_clerks 
           WHERE name = 'TokenAndPermUserStore'
      • 캐시 크기를 사용하면 관찰된 임계값보다 클 경우 다음 명령을 실행하여:
        DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')

참조

자세한 내용은 Microsoft 기술 자료에 있는 문서를 보려면 다음 문서 번호를 클릭하시기 바랍니다:
933564FIX: SQL Server 2005에서 A 점진적 USERSTORE_TOKENPERM 캐시 저장소 메모리 소비가 증가할이 발생합니다.
959823SQL Server 2005 서비스 팩 3 TokenAndPermUserStore 캐시 저장소 할당량 사용자 지정하는 방법

속성

기술 자료: 927396 - 마지막 검토: 2009년 7월 28일 화요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
키워드:?
kbmt kbtshoot kbinfo kbsql2005tsql kbprb KB927396 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