SQL Server 캐시에서 테이블을 지우려면 어떻게해야합니까?


10

데이터베이스에 캐시해서는 안되는 테이블이 몇 개 있습니다.

SQL Server에 테이블 페이지를 캐시하지 않도록 지시하거나 캐시에서 단일 테이블을 플러시하는 방법은 무엇입니까?

모든 캐시를 플러시하는 것은 옵션이 아닙니다.

SQL Server 2008 및 SQL Server 2008 R2를 사용하고 있습니다.


4
테이블을 캐시하지 말기로 결정한 것은 무엇입니까?

3
테이블이 캐시되면 쿼리됩니다. 자주 액세스하지 않으면 SQL Server 메모리 관리자가 필요한 시간에 다른 개체보다 우선적으로이를 플러시합니다. 당신의 목표는 무엇입니까?
John Sansom

4
@John-OP의 목표가 무엇인지 모르지만 이것이 유용 할 때가 있습니다. 예를 들어 버퍼 풀을 비우지 않고 큰 테이블에 대해 일회성 스캔을 수행합니다.

3
우선 순위가 낮은 테이블, SQL Server와 동일한 시스템의 iis / rs, 전력 사용량 등의 이유 중 일부는 애플리케이션의 성능과 관련하여 우선 순위가 낮은 테이블이며 디스크에서 안전하게 읽을 수 있다는 점입니다. 그들이 접근 할 때마다. 해당 테이블을 버퍼 풀에서 제외하면 메모리 분석이 다소 쉬워집니다.
Catalin Adler

1
@ user973156 : 코드와 디자인 SQL Server에서만 추측 할 수있는 것이 좋습니까?
gbn

답변:


12

이를 수행 할 방법이 없습니다.

DBCC DROPCLEANBUFFERS특정 데이터베이스 또는 개체에 대한 매개 변수를 허용하지 않습니다. 내부적으로 SQL Server는 데이터베이스 수준에서이 작업을 수행 할 수 있지만 데이터베이스가 AUTO_CLOSEd 인 경우 해당하는 모든 페이지가 버퍼 캐시에서 제거됩니다.

또한 내부적으로 SQL Server는 특정 페이지를 표시하여 게으른 작성자가 첫 페이지를 표시 할 수 있습니다. DMV sys.dm_db_index_physical_stats이 기사 에서 언급 한 것처럼 버퍼 풀 플러시를 피하기 위해 DMV에서 사용 하지만이 기능은 어떤 방식으로도 노출되지 않습니다 (단일 스캔을 수행하는 경우 동일하게 지정할 수있는 경우에도 유용함) 큰 테이블의 예).


7

특정 테이블을 캐시하지 않도록 지정할 수 없습니다. 캐시에 테이블을 원하지 않는다고 생각하는 이유는 무엇입니까?

SQL Server는 버퍼 풀에서 모든 일반 작업을 수행하므로 SQL Server에 테이블을 캐시에로드하지 않도록 지시 할 수 있으면 일반 DML 작업에 해당 테이블에 액세스 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.