Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Risoluzione dei problemi relativi all'esaurimento dei thread di lavoro

Poiché la tua istanza subisce un traffico più elevato insieme all'utilizzo simultaneo, potrebbe esaurire i thread di lavoro necessari per elaborare le richieste di sessione. Ciò significa che le sessioni attenderanno che i thread di lavoro vengano assegnati per elaborare le richieste. Molto probabilmente comporterebbe tempi di elaborazione più lenti e riscontrerebbe tipi di attesa come SOS_SCHEDULER_YIELD, THREADPOOL e CXPACKET.

In genere, il problema è causato da uno dei seguenti elementi:

  • Molte connessioni attive
  • Molte query di lunga durata
  • Query che utilizzano il parallelismo
  • CPU del server non sufficientemente potente per il carico di lavoro

I rimedi più comuni sono:

  • Riduci il numero di connessioni
  • Identifica e ottimizza le query di lunga durata
  • Identifica e ottimizza le query con l'utilizzo di un elevato grado di parallelismo
  • Identifica e ottimizza le query con il tipo di attesa della CPU
  • Identifica e ottimizza le query con il tipo di attesa CXPACKET
L'allarme SQL - Thread Out of Threads di Spotlight Cloud notifica all'utente quando l'istanza sta esaurendo i thread di lavoro per elaborare le richieste di sessione.


Utilizza i dashboard di diagnostica Spotlight Cloud per risolvere il problema:

  1. Ridurre il numero di connessioni. Visita la dashboard Sessioni per identificare la quantità di attività:

  2. Identifica e ottimizza le query di lunga durata:

    un. Utilizzare il dashboard di Workload Analyzer per visualizzare l'SQL principale in base al tempo di attività. Fare clic sulla dimensione Istruzioni SQL e ordinare le query in base alla metrica Tempo attivo:


    b. Utilizzare il dashboard di Workload Analyzer per visualizzare l'SQL più importante per grado di parallelismo. Ottimizza le query o utilizza suggerimenti per le query all'interno di istruzioni di query per ridurre l'uso del grado di parallelismo.

    I. Evidenzia la dimensione dell'istruzione SQL dall'albero e fai clic sull'icona dell'hamburger per aprire il selettore delle metriche:


    II. Individua il campo Grado di parallelismo e abilitalo. Usa il mouse per trascinare il campo in cima all'elenco dei campi


    III. Ordina per colonna Grado di parallelismo per identificare le query con i thread più alti:


    c. Utilizzare l'analizzatore del carico di lavoro per filtrare l'SQL superiore in base al tipo di attesa della CPU. Fare clic sull'icona del tipo di attesa CPU nell'intestazione ed espandere la dimensione Istruzioni SQL. Ottimizza le query di conseguenza:


    d. Utilizzare il dashboard di Workload Analyzer per filtrare l'SQL superiore per altro tipo di attesa. Fare clic sull'icona Altro tipo di attesa sul banner. Espandere la dimensione Istruzioni SQL. Utilizzare il riquadro Ripartizione risorse per identificare le query con il tipo di attesa CXPACKET. Ottimizza le query di conseguenza:
Prova Spotlight Cloud gratuitamente!