Come bilanciare la memoria di SQL Server con la memoria di SQL Server Analysis Services


11

Abbiamo molti sistemi che hanno la stessa configurazione

  • Un server (virtuale o fisico)
  • Esecuzione di SQL Server (SQL) e SQL Server Analysis Server (AS)
  • più core
  • 16 GB di RAM

Ogni notte SQL Server eseguirà circa 2-3 ore di elaborazione, seguite da 2-3 ore di elaborazione AS. Quindi durante il giorno vengono interrogati solo gli AS.

Supponendo che si tratti di un server dedicato e che nessun'altra app sia preoccupante e che i due set di elaborazione siano completamente sincroni, senza sovrapposizioni sempre una dopo l'altra, come posso impostare al meglio i limiti di memoria del server SQL e AS.

Il motivo per cui è stato chiesto è che se non imposto un limite per SQL, afferrerà tutta la memoria possibile. Tuttavia, la mia comprensione è che SQL lascerà felicemente questa memoria se:

  • Non lo sta usando e

  • Un altro servizio / programma lo richiede.

Quindi da un punto di vista logico credo che consenta a SQL di prendere tutto il necessario, ma non sono così sicuro di AS ' TotalMemoryLimit. Non sono sicuro se AS rinuncerà alla sua memoria. In effetti leggere di più mi porta a credere che sia sbagliato lasciare che prenda tutto.

Questo significa che ho davvero bisogno di impostare limiti per entrambi? Sono confuso su quali dovrebbero essere le migliori pratiche e cosa dobbiamo misurare considerando che i processi non si sovrappongono.

Spero che abbia senso.

Risposte:


9

Penso che sia possibile forzare le mani di entrambi i servizi avendo un'attività o un servizio programmato che:

(a) prima dell'elaborazione notturna di SQL Server, arresta il servizio SSAS e aumenta la memoria assegnata a SQL Server

(b) dopo che SQL Server ha terminato l'elaborazione, riduce la memoria massima del server e riavvia SQL Server

(c) avvia SSAS

Ciò presuppone che SSAS non sia tenuto in linea durante l'elaborazione di SQL Server. Altrimenti cambia (a) da "spegni" a "riavvia" ... fintanto che SSAS non sta attivamente facendo nulla durante l'elaborazione di SQL Server, non dovrebbe esserci alcuna preoccupazione che ruberà la memoria.

Ciò presuppone anche che si desideri che ciascun servizio si sovrapponga al consumo di memoria e che si usi la stessa memoria in momenti diversi: sono sicuro che ci sono modi con affinità / NUMA ecc. Per separare completamente lo spazio operativo o, nel peggiore dei casi, ospitare li su macchine diverse.


Penso che forse dovremmo riavviare anche SQL dopo l'elaborazione SASS, dal momento che esegue una lettura di grandi dimensioni (Data warehouse).
Preet Sangha,

In realtà pensandoci: il riavvio del server SQL non avrà un impatto su tutta l'elaborazione SQL?
Preet Sangha,

1
@Preet sì, non è questo il punto?
Aaron Bertrand

7

SQL e SSAS devono mai essere eseguiti contemporaneamente? Se no, sei sicuro al 100%?

Vorrei esaminare l'impostazione della memoria per SQL e SSAS per vedere se possono cooperare tra loro.

Dovremo lasciare un po 'di memoria per il sistema operativo, altri processi e allocazioni multipagina. Forse 4G?

Prova qualcosa del genere ...

Sul lato SQL, impostare Max Server Memory su 12G e Min Server Memory su 6G.

Sul lato SSAS, impostare TotalMemoryLimit su 12G e LowMemoryLimit su 6G.

Inoltre, non abilitare Blocca pagine in memoria.

Prova alcune iterazioni, regolando questi numeri su o giù.

Se questo non funziona e sai per certo che SQL e SSAS non devono essere eseguiti contemporaneamente, proverei il suggerimento di Aaron di pianificare i lavori per attivare e disattivare i servizi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.