서버 구성: 액세스 검사 캐시
적용 대상: SQL Server
데이터베이스 개체를 SQL Server에서 액세스할 때 액세스 검사는 access check result cache라는 내부 구조에 캐시됩니다. 임시 쿼리 실행 속도가 높은 SQL Server 인스턴스에서는 sys.dm_os_memory_cache_entries
보기에 클래스가 65535인 액세스 검사 토큰 항목 다수가 표시될 수 있습니다. 클래스가 65535인 액세스 검사 토큰 항목은 특수 캐시 항목을 의미합니다. 이러한 캐시 항목은 쿼리에 대한 누적 권한 검사에 사용합니다.
예를 들어 다음과 같은 쿼리를 실행할 수 있습니다.
SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;
이 경우 SQL Server는 이 쿼리에 대한 누적 권한 검사를 컴퓨팅합니다. 이 검사는 사용자에게 t1
, t2
및 t3
에서의 SELECT 권한이 있는지 확인합니다. 이러한 누적 권한 검사의 결과는 액세스 확인 토큰 항목에 포함되며, 액세스 검사 캐시 저장소에 ID 65535로 삽입됩니다. 동일한 사용자가 이 쿼리를 여러 번 다시 사용하거나 실행하면, SQL Server에서는 액세스 확인 토큰 캐시 항목을 1회 재사용합니다.
이 캐시의 사용을 최적화하려면 다양한 쿼리 매개 변수화 기술을 사용하거나, 자주 사용하는 쿼리 패턴을 변환하여 저장 프로시저를 사용하는 것이 좋습니다.
access check cache bucket count
옵션은 액세스 검사 결과 캐시에 사용되는 해시 버킷 수를 제어합니다.
access check cache quota
옵션은 액세스 검사 결과 캐시에 저장되는 항목 수를 제어합니다. 최대 항목 수에 도달하면 가장 오래된 항목이 액세스 검사 결과 캐시에서 제거됩니다.
설명
0
의 기본값은 SQL Serve에서 이러한 옵션을 관리함을 나타냅니다. 기본값은 다음과 같은 내부 구성으로 변환됩니다.
SQL Server 2016(13.x) 이상 버전
구성 설정 | 서버 아키텍처 | 기본 항목 수 |
---|---|---|
access check cache quota |
X64 | 1,024 |
access check cache bucket count |
X64 | 256 |
SQL Server 2008(10.x)에서 SQL Server 2014(12.x)까지
구성 설정 | 서버 아키텍처 | 기본 항목 수 |
---|---|---|
access check cache quota |
x86 | 1,024 |
x64 및 IA-64 | 28,192,048 | |
access check cache bucket count |
x86 | 256 |
x64 및 IA-64 | 2,048 |
드문 경우지만 이러한 옵션을 변경하여 성능을 향상시킬 수 있습니다. 예를 들어 너무 많은 메모리가 사용되는 경우 액세스 검사 결과 캐시의 크기를 줄일 수 있습니다. 또는 사용 권한이 다시 계산될 때 높은 CPU 사용량이 발생하는 경우 액세스 검사 결과 캐시의 크기를 늘립니다.
이러한 옵션은 Microsoft 고객 지원 서비스에서 안내하는 경우에만 변경하는 것이 좋습니다. access check cache bucket count
및 access check cache quota
값을 변경하려면 1:4 비율을 사용합니다. 예를 들어 access check cache bucket count
값을 512
로 변경하는 경우 access check cache quota
값을 2048
로 변경해야 합니다.