읽기 전용 데이터베이스 테이블을 메모리에 로드
-
09-06-2019 - |
문제
내 응용 프로그램 중 하나에는 참조 데이터에 사용되는 1GB 데이터베이스 테이블이 있습니다.해당 테이블에서 엄청난 양의 읽기가 발생하지만 쓰기는 없습니다.디스크에서 액세스할 필요가 없도록 데이터를 RAM에 로드할 수 있는 방법이 있는지 궁금합니다.
SQL Server 2005를 사용하고 있습니다.
해결책
RAM이 충분하면 SQL은 RAM에 로드할 항목과 디스크에서 검색할 항목을 결정하는 뛰어난 작업을 수행합니다.
이 질문은 자주 묻는 질문이며 프로세스가 실행될 "코어"를 수동으로 설정하려는 사람들을 생각나게 합니다. 즉, OS(또는 이 경우 DB)가 설계된 대로 작업을 수행하도록 하십시오.
SQL이 실제로 캐시에서 조회 데이터를 읽고 있는지 확인하려면 부하 테스트를 시작하고 Sysinternals를 사용할 수 있습니다. 파일몬, 프로세스 탐색기 그리고 프로세스 모니터 1GB 테이블이 읽히지 않는지 확인합니다.이러한 이유로 우리는 때때로 "조회" 데이터를 별도의 파일 그룹에 저장하여 디스크에서 해당 데이터에 액세스할 때 모니터링하기가 매우 쉽도록 합니다.
도움이 되었기를 바랍니다.
다른 팁
memcached를 살펴보고 싶을 것입니다.이와 같은 문제를 처리하기 위해 대규모(그리고 규모가 잘 갖춰진) 사이트가 많이 사용되었습니다.예비 서버가 몇 대 있다면 대부분의 데이터를 메모리에 보관하도록 쉽게 설정할 수 있습니다.
http://en.wikipedia.org/wiki/Memcached
sql2005 이상에 대한 문제를 명확히 하기 위해 다음을 수행하십시오.
이 기능은 SQL Server 버전 6.5의 성능을 위해 소개되었습니다.DBCC PINTable은 원치 않는 부작용을 가지고 있습니다.여기에는 버퍼 풀 손상 가능성이 포함됩니다.DBCC 파인드가 필요하지 않으며 추가 문제를 예방하기 위해 제거되었습니다.이 명령의 구문은 여전히 작동하지만 서버에는 영향을 미치지 않습니다.
DBCC 핀테이블 캐시된 상태를 유지하려는 경우 테이블을 코어에 명시적으로 고정합니다.