ASP.NET 웹 사이트에 자체 데이터 캐싱을 수행하고 데이터가 장기간 변경되지 않으므로 동일한 쿼리로 SQL Server를 두 번 쿼리 할 필요가 없습니다. 해당 SQL Server로 이동하는 최초 (처음) 쿼리의 성능을 향상시켜야합니다. 일부 쿼리는 너무 많은 데이터를 처리하여 SQL Server를 사용할 수 있습니다 tempdb
. 임시 테이블 변수 또는 임시 테이블을 사용하지 않으므로 SQL Server는 tempdb
필요할 때마다 자체적 으로 사용하기로 결정 합니다.
내 DB 크기는 16Gb이고 서버 시스템에서 32Gb의 실제 RAM을 사용할 수 있습니다.
MS SQL Server 캐싱 전략은 동일한 데이터를 다시로드해야하는 경우 유사한 쿼리의 성능을 높이기 위해 RAM에 데이터를 유지하려고합니다. 또한 tempdb 대신 사용 가능한 RAM을 사용하여 디스크 액세스없이 성능을 향상 시키려고합니다.
tempdb SQL Server에 무언가를 저장 해야하는 쿼리가 나오고 사용 가능한 RAM이 충분하지 않으면 SQL Server에 두 가지 선택이 있다고 가정합니다.
1) 캐시 된 데이터를 언로드하고 tempdb 대신 여분의 RAM을 사용하여 디스크 쓰기 방지
2) 향후 쿼리를 위해 캐시 된 데이터를 유지하고 tempdb를 사용하기 시작하면 디스크 쓰기 속도가 느려집니다.
이 상황에서 SQL Server가 어떤 선택을할지 모르겠지만 첫 번째 (처음) 쿼리의 성능에만 관심이 있기 때문에 # 1을 선택하고 싶습니다. 같은 쿼리를 SQL Server에 다시 보내지 않기 때문입니다. (유사한 쿼리를 보낼 수도 있지만).
이 시나리오에 대한 SQL Server 캐싱 전략은 무엇입니까?
버진 쿼리에 대한 tempdb 방지와 두 번째 쿼리 속도 사이에서 RAM 사용의 균형을 어떻게 조정합니까?
선택 # 1을하는 방식으로 SQL Server를 구성 할 수 있습니까? 그렇다면 어떻게?
다른 모든 SQL 쿼리의 성능을 향상시킬 수있는 방법은 무엇입니까?
SQL Server 캐싱 전략에 대해 잘 모르기 때문에 RAM 디스크에 데이터베이스를 배치하고 싶습니다. 이렇게하면 SQL Server가 항상 # 1을 선택하더라도 모든 처녀 쿼리에 캐시되지 않은 데이터를 빠르게로드 할 수 있습니다. 그것의 위험은 SQL Server가 2 번 선택을 계속하면 사용 가능한 RAM이 적을 때 더 많은 tempdb를 사용하기 시작할 수 있다는 것입니다 (RAM 디스크에 16Gb를 사용한 후에 16Gb 만 남음) tempdb
.
SQL 2008 R2 솔루션에 관심이 있지만 SQL 2008, SQL 2005와 동일하고 SQL 2000 일 수 있습니다.
설명 :
해당 상자에서 실행되는 다른 응용 프로그램은 없으며 SQL Server 전용 입니다. 웹 사이트는 별도의 상자에서 실행됩니다.
Windows Server 2008 R2 Enterprise 64 비트의 SQL Server 2008 R2 Standard Edition 64 비트입니다.
읽기 전용 쿼리 만 실행하고 데이터베이스는 읽기 전용으로 설정되어 있습니다 .
이미 좋은 인덱스가 있다고 가정 해 봅시다 . 이 질문은 SQL Server가 선택 # 1과 선택 # 2를 선택하는 방법, 제어 방법이 있고 RAM 디스크가 처녀 쿼리에 적합한 선택을하는 데 도움이되는 경우 어떻게 하는가에 관한 것입니다.