문제

내 응용 프로그램 중 하나에는 참조 데이터에 사용되는 1GB 데이터베이스 테이블이 있습니다.해당 테이블에서 엄청난 양의 읽기가 발생하지만 쓰기는 없습니다.디스크에서 액세스할 필요가 없도록 데이터를 RAM에 로드할 수 있는 방법이 있는지 궁금합니다.

SQL Server 2005를 사용하고 있습니다.

도움이 되었습니까?

해결책

RAM이 충분하면 SQL은 RAM에 로드할 항목과 디스크에서 검색할 항목을 결정하는 뛰어난 작업을 수행합니다.

이 질문은 자주 묻는 질문이며 프로세스가 실행될 "코어"를 수동으로 설정하려는 사람들을 생각나게 합니다. 즉, OS(또는 이 경우 DB)가 설계된 대로 작업을 수행하도록 하십시오.

SQL이 실제로 캐시에서 조회 데이터를 읽고 있는지 확인하려면 부하 테스트를 시작하고 Sysinternals를 사용할 수 있습니다. 파일몬, 프로세스 탐색기 그리고 프로세스 모니터 1GB 테이블이 읽히지 않는지 확인합니다.이러한 이유로 우리는 때때로 "조회" 데이터를 별도의 파일 그룹에 저장하여 디스크에서 해당 데이터에 액세스할 때 모니터링하기가 매우 쉽도록 합니다.

도움이 되었기를 바랍니다.

다른 팁

memcached를 살펴보고 싶을 것입니다.이와 같은 문제를 처리하기 위해 대규모(그리고 규모가 잘 갖춰진) 사이트가 많이 사용되었습니다.예비 서버가 몇 대 있다면 대부분의 데이터를 메모리에 보관하도록 쉽게 설정할 수 있습니다.

http://en.wikipedia.org/wiki/Memcached

http://www.danga.com/memcached/

http://www.socialtext.net/memcached/

sql2005 이상에 대한 문제를 명확히 하기 위해 다음을 수행하십시오.

이 기능은 SQL Server 버전 6.5의 성능을 위해 소개되었습니다.DBCC PINTable은 원치 않는 부작용을 가지고 있습니다.여기에는 버퍼 풀 손상 가능성이 포함됩니다.DBCC 파인드가 필요하지 않으며 추가 문제를 예방하기 위해 제거되었습니다.이 명령의 구문은 여전히 ​​작동하지만 서버에는 영향을 미치지 않습니다.

DBCC 핀테이블 캐시된 상태를 유지하려는 경우 테이블을 코어에 명시적으로 고정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top