SQLServer: Buffer Cache Hit ratio è una buona indicazione di un POSSIBILE collo di bottiglia della memoria?

Sto cercando unindicazione (se presente) che potrebbe ignorare lopzione collo di bottiglia della memoria, o accettarla, o farmi indagare ulteriormente.

ad esempio:

aspettativa di vita della pagina:

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

inserisci qui la descrizione dellimmagine

IN questa occasione, nel mio ambiente attuale, ho un server con 8 GB di RAM, chiederei alla direzione per più memoria. Credo che questo sia un collo di bottiglia della memoria.

ciò che sta usando la RAM sarebbe unaltra indagine.

questa email qui sotto è valida per identificare possibili colli di bottiglia della memoria?

dobbiamo esaminare SQLServer: Buffer Cache Hit ratio

Se questo rapporto è inferiore al 95%, il server è sotto pressione di memoria

Spero che questo sia daiuto,

inserisci qui la descrizione dellimmagine

Commenti

  • Non basare il tuo suggerimento sulla memoria su Buffer Cache hit ratio . Si prega di leggere Grande dibattito su SQL Server su BCHR perché non mi affido mai a questo contatore. Puoi fare affidamento su PLE ma devi vedere PLE per tutti i nodi NUMA (se lo hai)
  • Il valore PLE sembra essere molto inferiore ma altri contatori vanno bene. Hai contrassegnato la domanda con due versioni, posso darti un elenco di contatori per monitorare lutilizzo della memoria ma poiché ci sono 2 versioni coinvolte, la loro è una piccola differenza. Quale versione stai guardando esattamente

Risposta

Dobbiamo esaminare il rapporto SQL Server: Buffer Cache Hit. Se questo rapporto è inferiore al 95% rispetto al server sotto pressione di memoria

Smetti di guardare Buffer Rapporto di riscontri nella cache per determinare la pressione della memoria. Questo perché con il meccanismo di lettura in anticipo in SQL Server sono già presenti più che sufficienti pagine nel pool di buffer per soddisfare la query, quindi BCHR non fornisce dati precisi sulla pressione della memoria. Potresti anche vedere che BCHR non scenderà nemmeno quando cè pressione della memoria. Tutto questo è stato spiegato in Grande dibattito su SQL Server su BCHR

Loutput di PLE che hai pubblicato sembra davvero basso ma non possiamo usare solo un contatore per misurare la pressione della memoria. PLE è più unindicazione dellattività di I / O sul server. Potrebbe essere possibile che a causa della forte attività di I / O PLE sia precipitato. Se si nota che la memoria del server Target e Total rimane la stessa. Il che è un buon segno.

Per Edition upto 2008 R2. Puoi utilizzare i seguenti contatori

  1. SQLServer: Buffer Manager – CheckpointPages / sec:

  2. SQLServer: Buffer Manager – Memory Grants In sospeso:

  3. SQLServer: Buffer Manager – Memoria server di destinazione:

  4. SQLServer: Buffer Manager – Memoria server totale

  5. SQLServer: Buffer Manager – Pagine libere

  6. SQLServer: Buffer Manager – Stallo elenco gratuito / sec

  7. SQLServer: Buffer Manager – Aspettativa di vita della pagina

Per SQL Server 2012 onwards pochi di Buffer I contatori del pool sono deprecati e quindi dobbiamo utilizzare i contatori di Memory Manager

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

  2. SQL Server: Memory Manager – Memoria totale del server (KB)

  3. SQL Server: Memory Manager – Memoria libera (KB)

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

  5. SQLServer: Buffer Manager – Pagine libere

  6. SQLServer: Buffer Manager – Stallo elenco gratuito / sec

  7. SQLServer: Buffer Manager – Aspettativa di vita della pagina

Nota se hai una intensa attività del disco, non dimenticare di fare riferimento anche ai contatori relativi al disco. Crea un set di raccolta dati e consenti lesecuzione per 4-5 ore quando il carico sul sistema è al massimo, quindi aggiungi listantanea del raccoglitore di dati nella tua domanda. Quindi possiamo determinare se SQL Server ha bisogno di più memoria o meno.

Personalmente 8G è un po meno RAM considerando il carico di lavoro e i requisiti del sistema operativo in questi giorni. In fondo alla tua testa dovresti sempre pensare ad aumentare la RAM.

Rispondi

dobbiamo esaminare SQLServer: rapporto di accesso alla cache del buffer

Se tale rapporto è inferiore al 95% rispetto al server sotto pressione di memoria

Spero che questo aiuti,

Non è questo che ti aiuterà a decidere da solo il collo di bottiglia della memoria. Piuttosto quello che preferirei è raccogliere i dati per i contatori inferiori almeno per un giorno durante le ore di lavoro / carico pesante.

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 

La soluzione migliore sarebbe Baseline the SQL server come suggerito Torna ai concetti di base: acquisizione di baseline su SQL di produzione Server che raccoglieranno anche i contatori delle prestazioni richieste insieme alle statistiche di attesa per qualsiasi problema ..

Inoltre, 8 GB di RAM potrebbero non essere adatti come da env di oggi, ma ancora una volta dipende da cosa è il carico sul sistema insieme alla dimensione dei database ospitati nellistanza \ istanze.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *