SQL Server-메모리에 DB를 강제로 배치 하시겠습니까?


14

SQL Server 2005 64 비트를 실행하는 강력한 Windows 2008 x64 서버 (4 x 4 코어 CPU, 32GB RAM)가 있습니다. 우리는 페이지가 메모리에 캐시 될 때까지 (6GB) 작지만 매우 중요한 데이터베이스가 액세스 속도가 느립니다 (사용은 매우 임의의 I / O이므로 주어진 페이지가 메모리에 있고 최종 사용자가 확률이 매우 낮습니다. 초기 속도 저하에 대해 불평하십시오). 디스크는 충분히 빠르지 만 (로컬 15K SAS) 앱이 다소 서툴게 작성되었으므로 (COTS 솔루션) SQL Server 2005에서 메모리에 데이터베이스를 "강제"하는 방법이 있는지 궁금합니다 (2008은 지원되지 않습니다) 초기 캐시 채움을 피하기 위해 벤더가 아직 업그레이드하지 않아야합니까?

내 현재 방법은 스크립트의 각 테이블에서 SELECT *를 실행하여 메모리에 데이터 페이지를 가져 오지만 일부 객체 (인덱스, 전체 텍스트 검색 등)는이 방법으로 캐시되지 않으며 인덱스를 조사하기 위해 스크립트를 수정하고 캐시에 적절한 WHERE 절을 작성하는 것은 복잡합니다).

답변:


15

아니요, 불행히도 데이터베이스를 캐시에 강제로 저장하는 방법은 없습니다. 당신의 무차별 대입 방법은 아마도 가장 간단합니다. 다음과 같이 인덱스가 1 % 조각화 된 경우 인덱스를 다시 작성한다고 말하는 것과 같이 임계 값 설정이 매우 낮은 인덱스 조각 모음 스크립트를 사용하면 더 가까이 갈 수 있습니다.

http://sqlserverpedia.com/wiki/Index_Maintenance

시간이 오래 걸리고 디스크에 더 많은 쓰기 작업이 수행되지만 인덱스 조각 모음 및 통계 업데이트로 인한 부작용이 발생할 수 있습니다.


9

Ok-브렌트의 대답에 대해서는 언급 할 수 없습니다 (아직 충분한 담당자가 없기 때문에). 그러나 조각 모음 경로를 진행하려면 반드시 인덱스를 다시 작성하지 않아도됩니다. 그러면 새로운 인덱스가 생성됩니다. 여유 공간이 충분하지 않은 경우 데이터베이스를 늘리고 다음 로그 백업이 최소한 인덱스 크기이고 로그에 많은 로그 레코드가있을 수 있습니다 (복구 모델에 따라 다름). 조각 모음 경로를 수행하려면 ALTER INDEX ... REORGANIZE를 수행하십시오. 여기서 여유 공간이 필요하지 않지만 (8K 페이지 하나) 리프 수준을 메모리로 읽고 조각난 것에서 만 작동합니다 페이지. 리프가 아닌 레벨은 일부 쿼리 후에 빠르게 나타나야하며 (팬 아웃에 따라) 리프 레벨보다 데이터가 훨씬 적어야합니다.


나는 --extrachars 좋아
매트 Rogish

1

데이터베이스 개체가 먼저 캐시에서 플러시되는 이유는 무엇입니까? SQL 서비스를 다시 시작하거나 데이터베이스를 끄거나 온라인 상태입니까? 아니면 다른 데이터베이스에서 캐싱하여 푸시됩니까?

문안 인사,

SCM.


1
현재 시스템은 테스트 중이며 자주 재부팅됩니다. 그 후 사용자가 불평합니다. 생산에서 희망이 훨씬 적음
Matt Rogish

연결 시작으로 인한 지연과 비슷합니다. 캐시 된 / 읽지 않은 읽기에서 눈에 띄는 차이를 사용자가 기대하지는 않습니다. 오버로드되거나 느린 디스크와 같은 다른 요소가없는 한.
SqlACID 2016 년


1

주요 테이블에서 FULLSCAN으로 통계를 업데이트하는 시나리오가있어서 데이터를 캐시에 저장하고 해당 테이블 주위의 후속 DML을 훨씬 빠르게 만들었습니다. 그리고 이것은 실행 계획에 아무런 변화가 없었기 때문에 오래된 통계의 결과가 아닙니다.


0

해당 데이터베이스만으로 SQL Server 의 두 번째 인스턴스 를 설치하고 해당 인스턴스 의 최소 메모리 를 6GB로 설정 하지 않는 이유는 무엇 입니까?

이렇게하면 다른 데이터베이스가 "작지만 매우 중요한"데이터베이스에서 메모리를 밀 치지 않게됩니다.

또한 다른 인스턴스를 오프라인으로 전환 할 수 있으며 소형 DB는 메모리에 남아 있습니다.


0

프로파일 러를 사용하여 SQL을 확인합니다. '논리적'읽기와 '물리적'읽기를 비교하십시오. SQL 서버는 똑똑하며 가장 효율적인 결과를 위해 필요한 RAM을 사용합니다.

자동 통계가 최신인지 확인하십시오.

쿼리 유형과 db 테이블 크기에 대한 더 많은 아이디어가 없으면 조금 이상하게 들립니다.

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