2011-04-26 2 views
0

SQL Server 2008 R2에서 실행되는 응용 프로그램을 호스팅하는 서버가 있습니다. 일주일 내내 우리는 25 명의 사용자가 하루에 약 40 만 번 호출하는 저장 프로 시저를 가지고 있습니다. 매우 효율적으로 실행되며 메모리 사용량은 낮습니다.SQL Server 2008 R2, 특정 작업에 대해 모든 리소스를 사용하지 마십시오.

토요일에 아무도 시스템에 없으면 대규모 업데이트 (수백만 개의 삽입 및 업데이트)가 실행되고 완료되면 서버의 모든 메모리가 소모됩니다. 서버는이 응용 프로그램 만 호스트하므로 SQL Server가 얻을 수있는 모든 RAM을 차지하는 데 아무런 문제가 없습니다. 그러나 저의 일부분은 모든 메모리가이 하나의 작업에 의해 소비된다는 낭비라고 생각합니다. 특정 작업이 실행될 때 SQL Server가 너무 많은 메모리를 사용하지 않도록 지시하는 방법이 있는지 궁금합니다. 이 작업은 주말에 실행되므로 시스템에 아무도 없을 때는 시간상으로 중요하지 않습니다.

그동안 SQL 서비스를 다시 시작하기 만하려고했습니다. 나는 이것을 처리하는 더 좋은 방법이 있는지 궁금 해서요? 그것은 좋은 일이 디스크에서 그들을 읽는 SQL 데이터 페이지를 캐시하기 때문에

감사

답변

1

메모리는 익숙해있다. 다음에 데이터 페이지에 액세스해야 할 때 디스크에서 읽는 것보다 훨씬 빠른 메모리에서 읽습니다.

SQL은 만료되거나 다른 페이지가로드되면 캐시 된 페이지를 플러시합니다.

SQL Server가 해당 서버에서 실행되는 유일한 큰 프로세스 인 경우 특히 걱정할 필요가 없습니다. 당신이 정말로 현금을 직접 세척 할 경우

, 당신은 다음과 같은 성명

DBCC DropCleanBuffers
1

때 너무 많은 메모리를 소모하지 SQL Server를 알 수있는 방법이 있다면 궁금 해서요을 실행할 수 있습니다 특정 작업이 실행됩니다. 이 작업은 주말에 실행되므로 아무도 시스템에 연결되어 있지 않으면 시간이 충분하지 않습니다. 중요.

하하하. 와, 너 걱정하지? SQL Server는 다른 데이터 요청을 시작하는 순간 캐시를 erpurpose 것입니다, 당신도 알다시피.

나는 그것 (!) 당신이 행동은 당신이 confgiured 동의하는 것이 매우 좋다 (또는 기본 구성에서 허용

얻을 수있는 SQL 서버는 모든 RAM을 복용에 문제가 없습니다) 허용됩니다.

표준 설치 : SQL Server는 가능한 한 많은 메모리를 LRU (Last Recently Used) 페이지 캐시로 사용합니다. 메모리에서 응답 한 요청이 디스크를 치는 요청보다 빠릅니다.

다른 활동이 없어도 자연스럽게 업데이트되어 메모리에서 다른 항목을 죽일 수 있습니다 - SQL Server가 마술처럼 리소스를 사용하지 않기로 결정하는 방법은 무엇입니까? 왜 그래야 하죠?

다음날 요청 된 새로운 데이터는 어쨌든 즉시 캐시로 돌아갑니다.

한편 SQL 서비스를 다시 시작하기 만하면됩니다.

집에있는 퍼널을 좋아하지 않을 때 불에 태워 버릴까요?

Windows를 완전히 다시 시작할 수 있습니다. 그러면 OS 레벨 캐시도 지워집니다.

정말 결과가 나오지 않습니다. Basiaclly 당신이 한 일은 caceh의 잘못된 데이터보다 나쁜 치료법입니다. 사용되지 않은 데이터는 어쨌든 플러시됩니다. 따라서 SQQL 서버에 이전 데이터를 잊어 버릴 수있는 방법으로 서버를 다시 시작합니다. 이전 데이터를 사용하지 않도록하기 때문에 어쨌든 그렇게 할 것입니다.

;) 문서의 읽기와 같은 소리가 순서입니다.

진지하게. 아무 문제 없습니다, 당신은 완전히 이것을 만듭니다. SQL Server는 모든 일반 표준에 의해 현명하게 작동하며 서버를 끄고 rstarting하여 일부 번호를 가짜로 사용하는 것을 제외하면 실제로 아무 것도하지 않습니다. SQL Server가 메모리를 사용하는 방법을 읽어보십시오. 그것은 emmory에 저장된 페이지가 영원히 머물러있는 것과는 다릅니다.

관련 문제