SQLServer: Buffertcache Hit ratio är en bra indikation på MÖJLIG minnesflaskhals?

Jag letar efter en indikation (om någon) som antingen skulle bortse från minnesflaskhalsalternativet, eller acceptera den eller få mig att undersöka mer.

till exempel:

sidans förväntade livslängd:

SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE "%Manager%" AND [counter_name] = "Page life expectancy" 

ange bildbeskrivning här

I det här tillfället har jag i min nuvarande miljö en server som har 8 GB RAM, skulle jag fråga ledningen för mer minne. Jag tror att detta är en minnesflaskhals.

vad som använder RAM skulle vara en annan undersökning.

Är det här e-postmeddelandet giltigt för att identifiera möjliga minnesflaskhalsar?

vi måste titta på SQLServer: Buffertcache-träffförhållande

Om detta förhållande är mindre än 95% än servern är under minnestryck

Hoppas det hjälper,

ange bildbeskrivning här

Kommentarer

  • Vänligen basera inte ditt förslag om minne på Buffer Cache hit ratio . Läs Stor SQL Server-debatt om BCHR eftersom jag aldrig litar på den här räknaren. Du kan lita på PLE men du måste se PLE för alla NUMA-noder (om du har)
  • PLE-värdet verkar vara mycket mindre men andra räknare är bra. Du taggade frågan med två versioner, jag kan ge dig en lista över räknare för att övervaka minnesanvändningen men eftersom det finns två versioner inblandade är deras skillnad lite. Vilken version tittar du exakt på

Svar

Vi måste titta på SQLServer: Buffertcache Hit-förhållande. Om det förhållandet är mindre än 95% än servern är under minnestryck

Sluta titta på bufferten Cache-träffförhållande för att bestämma minnestrycket. Detta beror på att med läs framåtmekanismen i SQL Server är det mer än tillräckligt med sidor i buffertpoolen för att tillfredsställa frågan så att BCHR inte ger korrekta siffror om minnetryck. Du kanske till och med ser att BCHR inte ens skulle tappa när det finns minnestryck. Alla dessa har förklarats i Fantastisk SQL Server-debatt om BCHR

PLE-utdata som du publicerade verkar riktigt låg men vi kan inte bara använda en räknare för att mäta minnetryck. PLE är mer indikation på I / O-aktivitet på servern. Det kan vara möjligt att PLE sjönk på grund av tung I / O-aktivitet. Om du noterar att Target och Total serverminne fortfarande är desamma. Vilket är ett bra tecken.

För Edition upto 2008 R2. Du kan använda räknare nedan

  1. SQLServer: Buffer Manager – CheckpointPages / sec:

  2. SQLServer: Buffer Manager – Memory Grants Väntar:

  3. SQLServer: Buffer Manager – Target Server Memory:

  4. SQLServer: Buffer Manager – Total Server memory

  5. SQLServer: Buffer Manager – Free Pages

  6. SQLServer: Buffer Manager – Free List Stall / sec

  7. SQLServer: Buffer Manager – Sidans förväntade livslängd

För SQL Server 2012 onwards få buffertar Poolräknare är utfasade och så måste vi använda Memory Manger-räknare

  1. SQL Server: Memory Manager – Target Server Memory (KB)

  2. SQL Server: Memory Manager – Total Server Memory (KB)

  3. SQL Server: Memory Manager- Free Memory (KB)

  4. SQL Server: Memory Manager – Database Cache Memory (KB)

  5. SQLServer: Buffer Manager – Free Pages

  6. SQLServer: Buffer Manager – Free List Stall / sec

  7. SQLServer: Buffer Manager – Sidans förväntade livslängd

Obs! Om du har tung diskaktivitet, glöm inte att hänvisa till diskrelaterade räknare också. Skapa en datainsamlingsuppsättning och låt den köra i 4-5 timmar när belastningen på systemet är på topp och lägg sedan till ögonblicksbilden för datainsamlaren i din fråga. Sedan kan vi avgöra om SQL Server behöver mer minne eller inte.

Personligen är 8G lite mindre RAM med tanke på arbetsbelastning och OS-krav idag. På baksidan av ditt huvud bör du alltid tänka på att öka RAM.

Svar

vi måste titta på SQLServer: Buffertcaches träffförhållande

Om detta förhållande är mindre än 95% än servern är under minnetryck

Hoppas det hjälper,

Detta är inte det som hjälper dig att själv bestämma minnesflaskhalsen. Snarare vad jag föredrar är att samla in data för nedanstående räknare åtminstone en dag under den tunga belastningen / arbetstiden.

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 

Det bästa skulle vara baslinjen för SQL-servern som föreslås Tillbaka till grunderna: Fånga baslinjer för SQL-produktion Servrar som också kommer att samla in de nödvändiga perfmon-räknarna tillsammans med väntestatistik för alla problem ..

8 GB RAM kanske inte är så passande enligt dagens env, men återigen beror det på vad som är belastningen på systemet tillsammans med storleken på databaser som är värd för förekomsten \ instanser.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *