2010-05-04 3 views
3

특정 응용 프로그램의 경우 어떤 이유로 든 데이터베이스가 다시 시작될 때마다 실행되는 쿼리 세트가 있습니다 (일반적으로 서버를 다시 부팅). 이 "기본"SQL Server의 페이지 캐시는 데이터의 공통 핵심 작업 집합을 사용하므로 사용자가 나중에 처음으로 로그인 할 때 속도가 비정상적으로 느려지지 않습니다.SQL 서버의 전체 데이터베이스 "Priming"최초 실행 속도

SQL 상자의 크기가 데이터베이스의 크기보다 큰 경우 (시스템의 4Gb, DB가 현재 1.5Gb 미만이며 상대적으로 너무 많이 증가하지 않을 수 있음)의 앱 인스턴스가 실행 중입니다. 가까운 장래에 그것에). SQL Server에 모든 것을 RAM에로드하라는 깔끔하고 쉬운 방법이 있습니까?

그것은 스크립트 스캔 sysobjects & sysindexes을 가진 모든 사용 페이지를 야기한다 발견 된 모든 키와 인덱스에 대한 SELECT * FROM <table> WITH(INDEX(<index_name>)) ORDER BY <index_fields>을 실행하여 하드 방법을 수행 할 수

한 번 이상 읽고 너무 RAM에 수 있지만이된다 더 깔끔하고 효율적인 방법? 데이터베이스 서버가 중지 된 모든 계획된 인스턴스는 비정상적인 근무 시간 (모든 사용자가 최대 한 시간대의 시간대에 있으며 나와 다른 것과는 달리 어리석은 시간에 작업하지 않음)이므로 이러한 프로세스 (완료 될 때까지)가 느려지 게됩니다 모든 작업을하지 않는 사용자는 전혀 문제가되지 않습니다.

답변

1

내가 sp_updatestats

  1. 어쨌든 그것은 이미 어쨌든 모든 것을 통해 루프
  2. 쿼리 도움이됩니다 호출되는 startup stored proc 사용하십시오 (당신이 바로, 인덱스가?)
+0

당신은 그것을해야합니까 샘플링뿐만 아니라 전체 스캔을 수행하도록 구성 되었습니까? –

+0

정상적인 샘플링을 사용합니다. 데이터는 64k 익스텐트 (8 페이지)로 캐시에로드되므로 익스텐트 당 한 행을 샘플링해야합니다. 매우 넓은 행이 아니라면 Enterprise 에디션의 readahead IO도 얻을 수 있습니다. 물건을 놓칠 수는 있지만 쉽게 할 수 있으며 페이지 당 3 행으로 5 % 샘플링도 100 % – gbn

관련 문제