it-swarm-ko.tech

SQL Server-강제 DB를 메모리에 저장 하시겠습니까?

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 절을 작성하십시오.

14
Matt Rogish

아니요, 안타깝게도 데이터베이스를 캐시에 강제로 넣는 방법은 없습니다. 당신의 무차별 대입 방법이 아마도 가장 간단 할 것입니다. 다음과 같이 인덱스가 1 % 조각난 경우 인덱스를 다시 빌드하는 것과 같이 임계 값 설정이 매우 낮은 인덱스 조각 모음 스크립트를 사용하여 더 가까워 질 수 있습니다.

http://sqlserverpedia.com/wiki/Index_Maintenance

시간이 더 오래 걸리고 디스크에 더 많은 쓰기가 필요하지만 인덱스 조각 모음 및 통계 업데이트의 부작용이있을 수 있습니다. 어쨌든 좋은 생각입니다.

15
Brent Ozar

Ok-Brent의 답변에 대해 언급 할 수는 없지만 (아직 충분한 담당자가 없기 때문에)-조각 모음 경로를 사용하려는 경우 반드시 인덱스를 다시 작성하지 않아도됩니다. 그러면 새 인덱스가 작성되므로 여유 공간이 충분하지 않은 경우 데이터베이스를 확장하고 다음 로그 백업이 최소한 인덱스의 크기이고 로그에 많은 로그 레코드가있을 수 있도록 보장합니다 (복구 모델에 따라 다름). 조각 모음 경로를 수행하려는 경우 ALTER INDEX ... REORGANIZE를 수행하십시오.이 작업은 여유 공간 (8k 페이지 1 개)이 필요하지 않지만 리프 수준을 메모리로 읽고 조각화 된 작업에서만 작동합니다. 페이지. 비 리프 수준은 일부 쿼리 후 빠르게 들어와야하며 (팬 아웃에 따라) 리프 수준보다 훨씬 적은 데이터 여야합니다.

9
Paul Randal

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

1
user172049

데이터베이스 개체가 처음에 캐시에서 플러시되는 이유는 무엇입니까? SQL 서비스를 다시 시작하거나 데이터베이스를 온라인/오프하고 있습니까? 아니면 다른 데이터베이스에서 캐싱하여 밀어 내고 있습니까?

문안 인사,

SCM.

1
SuperCoolMoss

데이터베이스가 그렇게 작 으면 SSD에 넣는 것을 고려 하시겠습니까?

1
Roger Lipscombe

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

이렇게하면 다른 데이터베이스가 "작지만 매우 중요한"데이터베이스에서 메모리를 절대 빼앗지 않습니다.

또한 다른 인스턴스를 오프라인으로 전환 할 수 있고 작은 DB가 메모리에 남아 있음을 의미합니다.

0
Portman

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

또한 자동 통계가 최신 상태인지 확인하십시오.

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

0
Guy