메모리 병목 옵션을 무시하거나 수락하거나 추가 조사를 할 수있는 징후 (있는 경우)를 찾고 있습니다.
예 :
페이지 예상 수명 :
SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE "%Manager%" AND [counter_name] = "Page life expectancy"
이번에는 현재 환경에 8GB의 RAM이있는 서버가 있습니다. 관리자에게 문의하겠습니다. 더 많은 메모리를 위해. 이것이 메모리 병목 현상이라고 생각합니다.
RAM을 사용하는 것은 또 다른 조사가 될 것입니다.
가능한 메모리 병목 현상을 식별하는 데 아래 이메일이 유효한가요?
SQLServer : Buffer Cache Hit 비율을 확인해야합니다.
해당 비율이 서버가 메모리 부족 상태에있는 것보다 95 % 미만인 경우
도움이되기를 바랍니다.
댓글
답변
SQLServer : Buffer Cache Hit ratio를 살펴 봐야합니다. 해당 비율이 서버가 메모리 부족 상태에있는 것보다 95 % 미만이면
버퍼 살펴보기 중지 메모리 부족을 결정하기위한 캐시 적중률. 이는 SQL Server의 미리 읽기 메커니즘 을 사용하면 버퍼 풀에 충분한 페이지가 이미 버퍼 풀에 존재하여 BCHR이 메모리 압력에 대한 정확한 수치를 제공하지 않기 때문입니다. 메모리 부족이있을 때 BCHR이 떨어지지 않는 것을 볼 수도 있습니다. 이 모든 내용은 BCHR에 대한 훌륭한 SQL Server 토론
게시 한 PLE 출력이 정말 낮게 보이지만 카운터를 하나만 사용할 수는 없습니다. 메모리 압력을 측정하십시오. PLE는 서버의 I / O 활동을 더 많이 나타냅니다. 과도한 I / O 활동으로 인해 PLE가 급감 할 수 있습니다. Target 및 Total 서버 메모리를 기록해도 여전히 동일합니다. 좋은 징조입니다.
Edition upto 2008 R2
의 경우. 아래 카운터를 사용할 수 있습니다.
-
SQLServer : Buffer Manager–CheckpointPages / sec :
-
SQLServer : Buffer Manager–Memory Grants 보류 :
-
SQLServer : Buffer Manager– 대상 서버 메모리 :
-
SQLServer : Buffer Manager– 총 서버 메모리
-
SQLServer : Buffer Manager–Free Pages
-
SQLServer : Buffer Manager–Free List Stall / sec
-
SQLServer : Buffer Manager-페이지 예상 수명
SQL Server 2012 onwards
버퍼가 거의 없음 풀 카운터는 더 이상 사용되지 않으므로 Memory Manger 카운터를 사용해야합니다.
-
SQL Server : Memory Manager– Target Server Memory (KB)
-
SQL Server : 메모리 관리자-총 서버 메모리 (KB)
-
SQL Server : 메모리 관리자-여유 메모리 (KB)
-
SQL Server : 메모리 관리자-데이터베이스 캐시 메모리 (KB)
-
SQLServer : 버퍼 관리자-사용 가능한 페이지
-
SQLServer : Buffer Manager–Free List Stall / sec
-
SQLServer : Buffer Manager–Page Life expectancy
디스크 활동이 많은 경우 디스크 관련 카운터도 참조하는 것을 잊지 마십시오. 데이터 수집기 집합을 생성 하고 시스템 부하가 최대 일 때 4-5 시간 동안 실행되도록 한 다음 질문에 데이터 수집기의 스냅 샷을 추가합니다. 그런 다음 SQL Server에 더 많은 메모리가 필요한지 여부를 결정할 수 있습니다.
개인적으로 8G는 요즘 작업 부하와 OS 요구 사항을 고려할 때 RAM이 약간 적습니다. 머릿속에서는 항상 RAM 증가에 대해 생각해야합니다.
답변
SQLServer : Buffer Cache Hit 비율을 살펴 봐야합니다.
해당 비율이 서버가 메모리 압력을받는 것보다 95 % 미만인 경우
도움이되기를 바랍니다.
이것은 메모리 병목 현상을 스스로 판단하는 데 도움이되지 않습니다. 오히려 내가 선호하는 것은 과부하 / 업무 시간 동안 적어도 하루 동안 아래 카운터에 대한 데이터를 수집하는 것입니다.
Memory – Available MBytes SQLServer: Buffer Manager – Page Life Expectancy SQLServer: Memory Manager – Memory Grants Pending SQLServer: Memory Manager – Target Server Memory SQLServer: Memory Manager – Total Server Memory SQLServer: SQL Statistics – Batch Requests/sec SQLServer: SQL Statistics – Compilations/sec
가장 좋은 방법은 제안 된대로 SQL 서버를 기준으로 지정하는 것입니다. 기본으로 돌아 가기 : 프로덕션 SQL에 대한 기준 캡처 서버 는 문제에 대한 대기 통계와 함께 필요한 성능 카운터를 수집합니다.
또한 8GB RAM은 오늘날 환경에 따라 적합하지 않을 수 있지만 인스턴스 \ 인스턴스에서 호스팅되는 데이터베이스 크기와 함께 시스템에 대한 부하.
Buffer Cache hit ratio
를 기반으로 기억에 대한 제안을하지 마십시오. . BCHR에 대한 훌륭한 SQL Server 토론 을 읽어보십시오. 사실 저는이 카운터에 의존하지 않습니다. PLE에 의존 할 수 있지만 모든 NUMA 노드에 대해 PLE를 확인해야합니다 (있는 경우).