배경
48GB RAM이있는 Win 2008 서버의 MSSQL 2008 (표준)에서 160gb 데이터베이스를 64GB RAM이있는 Win 2012의 MSSQL 2012 (64 비트 웹 버전)를 실행하는 새 서버로 마이그레이션하는 중입니다. 이전 서버는 활성 상태이며로드 상태입니다. 새 서버가 프로덕션 상태가 아닙니다. 새 서버에는 8 개의 tempdb 파일 (각 4GB)이 있습니다.
문제
새 서버에서 테스트 할 때 수많은 쿼리의 단계에서 "운영자가 tempdb를 사용하여 데이터를 유출하는 데 사용했습니다"라는 경고가 표시됩니다. 일부 쿼리를 다시 작성하여 정렬을 피할 수 있었지만 실제로 문제를 해결하지는 않습니다. 이전 서버의 동일한 쿼리로 인해 유출이 발생하지 않습니다. MSSQL이 메모리에서 작업을 완료 할 수없고 tempdb로 넘치거나 페이지를 넘겨야 할 때 유출이 발생한다는 것을 읽었습니다. 유출에 대해 걱정해야합니까?
예
데이터베이스에서 sp_updatestats를 실행 했으므로 통계가 최신 상태 여야하지만 예상 행 수와 실제 행 수 사이에 약간의 차이가 있습니다.
기억력 문제
64GB 중 58의 MSSQL에 대한 최대 메모리 설정을 설정했습니다. 현재 MSSQL은이 메모리의 약 35GB를 소비했지만 682mb의 작업 세트 만 있습니다. 이전 서버 (프로덕션, 처리 부하에도 불구하고)에는 44GB의 메모리가 MSSQL에 커밋되어 있으며 그 중 43.5gb가 작업 세트에 있습니다.
유출이 메모리 설정과 관련이 있는지 모르겠습니다. 아무도 아이디어가 있습니까? MSSQL은 현재 여분의 RAM을 가지고 있으므로 왜 어떤 종류와 해시 일치를 위해 tempdb에 유출됩니까?