SQL Server를 다시 시작하면 속도가 빨라 집니까?


22

일부 DBA가 SQL Server를 매우 자주, 때로는 밤마다 다시 시작한다는 것을 알았습니다. 나는 그들이 메모리를 확보하거나 쿼리 속도를 높이기 위해 그렇게한다고 생각합니다. 다시 시작한 쿼리 계획을 다시 컴파일해야한다는 것을 알고 있지만 포함 하여도이 연습에 순 이익이 있는지 궁금합니다.

SQL Server를 매일 다시 시작하면 더 빨리 실행된다는 것이 사실입니까?

답변:


37

서버를 다시 시작하는 것은 아마도 성능에 가장 해로운 요소 중 하나 일 것입니다. 즉, 데이터에 대한 콜드 캐시, 쿼리 계획에 대한 콜드 캐시 및 모든 SQL Server 내부 캐시도 프로세스에서 제거됩니다. 운영 통계 DMV에서 수집 된 모든 통계를 버림으로써 무언가를 성공적으로 조사 할 가능성을 줄입니다.

이 관행을 뒷받침하는 공식적인 지침은 없습니다. 나는 어떤 좋은 관행에서도 잘 알려져 있습니다. 하지마


동의하지 않습니다. SQL Server는 보안 패치가있는 Windows 서버에서 호스팅되며 MS 업그레이드에는 정기적으로 재부팅해야합니다. 더 나은 SQL 디자인이 성능 문제를 해결하고 서버 재부팅에 의존하지 않는 열쇠라고 생각하지만 때로는 필요한 단계입니다.
Fandango68

27

다른 답변은 훌륭하지만 Windows의 파일 캐시와 같은 중요한 부분이 누락되었습니다.

64 비트 Windows에서는 Windows가 파일을 캐시하는 데 사용하는 메모리 양에 제한이 없습니다. Windows는 시스템의 메모리가 완전히 고갈 될 수 있으며이 시점에서 디스크로 교체를 시작합니다. 몇 곳에서 문서화되었습니다.

SQL Server를 다시 시작하면 SQL이 메모리를 강제로 포기하여 Windows의 성능이 향상되고 페이징이 일시적으로 중지됩니다. 거의 제로에 가까운 메모리를 사용하면 SQL이 다시 시작되고 점차 증가하며, 메모리가 부족하면 다시 시작하면 일시적으로 도움이됩니다. 전체 OS를 다시 시작하면 Windows의 파일 캐시 사용이 강제로 중단됩니다.

실제 수정 사항 : Windows 서버에서 파일 복사를 중지하거나 위의 블로그 게시물에 설명 된대로 동적 파일 캐시 서비스와 함께 사용중인 파일 캐시의 양을 제한하십시오.


3
+1이 문제를 알고 있었고 동적 캐시 서비스를 사용하여 캐시를 제한 할 수 있다는 것을 알지 못했습니다.
Mark Storey-Smith

메모리를 MIN 및 MAX에 "고정"하는 방법 (정확히 동일한 KB 크기 여야하지만) SQL Server가 미리 정의 된 양의 MIN / MAX RAM 만 사용하여 다른 Windows 서비스 / 응용 프로그램 / 네트워킹 요청이 계속 작동합니다. 이것은 나의 연습이었고 훌륭하게 작동했습니다. 다른 생각?
SnapJag

@SnapJag-SQL이 즉시 최소량을 소비하지 않기 때문에 반드시 그런 것은 아닙니다. SQL은 0에서 시작하여 필요에 따라 점차 증가합니다.
Brent Ozar

11

쿼리 속도를 높이면 매개 변수 스니핑 이 관련 될 수 있습니다. 폐기 계획이 캐시되어 부적절한 후속 호출에 적용되는 경우 재부팅의 기적은 공통 / 정확한 계획을 캐시 할 수있게합니다. 이 경우 다른 사람이 지적한 것처럼 동작을 수정하는 더 좋은 방법이 무한히 있습니다. 그러나 상자 재부팅을 중지 할 때까지 근본 원인 분석을 수행 할 방법이 없습니다.


이것은 받아 들여진 대답이어야합니다. 적절한 SQL 디자인 및 계획 설계는 서버 재부팅의 필요성을 피하는 데 중요하지만 보안 패치 등과 같은 서버 정책으로 인해 서버 재부팅이 필요할 수 있습니다.
Fandango68

11

서비스 속성을 변경하거나 즉시 적용 할 시작 추적을 설정하지 않으면 SQL Server를 다시 시작하지 않아야합니다.

@RemusRusanu가 많은 요점을 언급했듯이 많은 캐시를 지우고 SQL Server에서 불필요한 시작 작업을 많이 수행합니다. .

이 서버는 전용 SQL Server / 데이터베이스 서버가 아닌 것 같습니다. 프로덕션 데이터베이스 서버에는 데이터베이스 서버가되는 단 하나의 목적이 있어야합니다. 이 경우 OS에 충분한 메모리와 리소스를 따로두고 다른 모든 것을 SQL Server에 제공합니다. 이로 인해 다른 응용 프로그램이나 서버 역할이 고갈되지 않습니다.


2

모든 일을 올바르게하고 있다면 MSSQL 서버를 재부팅 / 재시작 할 필요가 없다는 정서에 동의합니다.
나에게 이것은 모든 사람이 유능하고 어떤 것을 고칠 수있는 시나리오에 적용됩니다.

저는 DBA가 아닙니다. 나는 소프트웨어 아키텍트 처음부터 전체 데이터베이스 스키마를 구축하고, 포함이의 일부입니다 불행하게도 , 나는 절대적 것을 제 3 자 데이터베이스 작업하지 NO 를 통해 제어 할 수 있습니다.
주요 타사 데이터베이스 중 하나를 만들고 유지 관리 한 사람들은 거의 기능을 수행하지 못했습니다.

내가 또한 보안 전문가 나 네트워크 엔지니어가 아니라고 언급 했습니까?

  • 매월 1-2 회 이상 주요 창 OS 업데이트, 보안 업데이트, BIOS 업데이트, OS / MSSQL 서비스 팩 또는 MSSQL 누적 업데이트가 제공됩니다.
  • 적시에 이들을 적용한다는 것은 매 분기마다 서버를 재부팅 / 다시 시작하는 것을 의미합니다.
  • 인트라넷 내부에서 작업 할 때에도 보안 업데이트를 적용하지 않는 이유는 무엇입니까?
  • PHI 인트라넷 웹 사이트에서 SSL을 사용할 수 있다면 네트워크에 오류가 없기 때문에 SSL을 사용할 수 있습니다. 나는 편집증이라고 생각합니다.


나에게 질문은 다음과 같이된다 : 3 개월마다 SQL Server를 더 자주 재시작해야 하는가?

추가 성능을 약속하기 위해 다시 시작하는 것은 비가 오는 춤과 같습니다.
어쩌면 오지 않을지 모르지만 비가 오게 된 원인을 확실히 알지 못할 것입니다.

  • 정기적 인 유지 관리로 인해 서버를 재부팅 한 후 성능이 크게 저하되는 경우 그 원인을 조사해야합니다.
  • 문제가 있고 원인이 무엇인지 확실하지 않은 경우 서비스 및 작업을 중지하여 변수를 줄이면 메모리 누수와 같은 것을 찾을 수 있습니다 (이와 같은 극단적 인 경우) 일부 서비스를 켜고 서버를 재부팅 / 재시작 할 수 있습니다 사용 중지 (또는 추적 사용)는 다른 서비스를 원인으로 배제하는 데 도움이됩니다.

나는 당신이 말하는 것과하지 마십시오 문제를 해결하거나 장애 조치를 확인하기 위해 다시 시작이 필요하지 않습니다,하지만 난 무작위로 발생하는 알 수없는 성능 문제를 유지하기 위해 일정을 재시작에 문제가 있습니다.

당신이 매주을 재부팅하거나 두가 작동 유지하는 유일한 방법이 될 것으로 보인다 불량 타사 데이터베이스를 관리하고이 수정에 허용되지 않습니다 또는 만지지 경우 이에 대한 예외입니다.
그럼에도 불구하고 수정 사항을 찾아서 소유자와 공유하고 해결 될 때까지 지옥을 제기해야합니다.

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