Condividi tramite


Aggiornamenti e opzioni di configurazione consigliati per SQL Server con carichi di lavoro ad alte prestazioni

Questo articolo include un elenco dei miglioramenti delle prestazioni e delle opzioni di configurazione disponibili per SQL Server 2012 e versioni successive.

Versione originale del prodotto: SQL Server 2014, SQL Server 2012
Numero KB originale: 2964518

Questo articolo descrive i miglioramenti delle prestazioni e le modifiche disponibili per le versioni di SQL Server 2014 e SQL Server 2012 tramite varie opzioni di configurazione e aggiornamenti del prodotto. È possibile valutare la possibilità di applicare questi aggiornamenti per migliorare le prestazioni dell'istanza di SQL Server. Il grado di miglioramento visualizzato dipenderà da vari fattori che includono il modello di carico di lavoro, i punti di contesa, il layout del processore (numero di gruppi di processori, socket, nodi NUMA, core in un nodo NUMA) e la quantità di memoria presente nel sistema. Il team di supporto di SQL Server ha usato questi aggiornamenti e modifiche alla configurazione per ottenere miglioramenti ragionevoli delle prestazioni per i carichi di lavoro dei clienti che usavano sistemi hardware con diversi nodi NUMA e molti processori. Il team di supporto continuerà ad aggiornare questo articolo con altri aggiornamenti in futuro.

Sistemi di fascia alta Un sistema di fascia alta in genere dispone di più socket, otto core o più per socket e una metà terabyte o più di memoria.

Nota

In SQL Server 2016 e versioni successive, molti dei flag di traccia indicati in questo articolo sono il comportamento predefinito e non è necessario abilitarli in tali versioni.

Le raccomandazioni sono raggruppate in tre tabelle come indicato di seguito:

  • La tabella 1 contiene gli aggiornamenti e i flag di traccia più frequentemente consigliati per la scalabilità nei sistemi di fascia alta.
  • La tabella 2 contiene raccomandazioni e indicazioni per l'ottimizzazione delle prestazioni aggiuntiva.
  • La tabella 3 contiene correzioni di scalabilità aggiuntive incluse insieme a un aggiornamento cumulativo.

Tabella 1. Aggiornamenti importanti e flag di traccia per sistemi di fascia alta

Esaminare la tabella seguente e abilitare i flag di traccia nella colonna Flag di traccia dopo aver verificato che l'istanza di SQL Server soddisfi i requisiti nella colonna Versione applicabile e intervalli di compilazione .

Nota

  • Versione applicabile e build indica l'aggiornamento specifico in cui è stato introdotto il flag di modifica o traccia. Se non viene specificato alcun CU, vengono inclusi tutti i CU nel sp.

  • Versione non applicabile e build indica l'aggiornamento specifico in cui il flag di modifica o traccia è diventato il comportamento predefinito. Pertanto, solo applicando tale aggiornamento sarà sufficiente per ottenere i vantaggi.

Importante

Quando si abilitano le correzioni con i flag di traccia negli ambienti Always On, tenere presente che è necessario abilitare i flag di correzione e traccia in tutte le repliche che fanno parte del gruppo di disponibilità.

Scenario e sintomo da considerare Flag di traccia Versione applicabile e intervalli di compilazione Versione non applicabile e intervalli di compilazione Articolo della Knowledge Base/Collegamento al blog che fornisce altri dettagli
  • Si riscontrano attese CMEMTHREAD elevate.
  • SQL Server viene installato nei sistemi con 8 o più core per socket.
T8048
  • DA SQL Server 2012 RTM al Service Pack corrente (SP)/CU
  • DA SQL Server 2014 RTM a SP1
  • DA SQL Server 2014 SP2 a SP/CU corrente
  • DA SQL Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
  • Si riscontrano attese CMEMTHREAD elevate.
  • SQL Server viene installato nei sistemi con 8 o più core per socket.
T8079 DA SQL Server 2014 SP2 a SP/CU corrente
  • DA SQL Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
  • Si usano funzionalità che si basano sulla cache del pool di log. (ad esempio, Always On)
  • SQL Server viene installato nei sistemi con più socket.
T9024 Pacchetto di aggiornamento cumulativo 3 per SQL Server 2012 Service Pack 1 a SP2 SQL Server 2014 RTM
  • DA SQL Server 2012 SP3 a SP/CUSQL corrente
  • Da Server 2014 SP1 a SP/CU corrente
  • DA SQL Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
FIX: valore del contatore "Attese di scrittura log" elevato in un'istanza di SQL Server 2012 o SQL Server 2014
L'istanza di SQL Server gestisce migliaia di reimpostazioni della connessione a causa del pool di connessioni. T1236 Pacchetto di aggiornamento cumulativo da 9 per SQL Server 2012 Service Pack 1 a SP2 aggiornamento cumulativo 1 per SQL Server 2014
  • DA SQL Server 2012 SP3 a SP/CUSQL corrente
  • Da Server 2014 SP1 a SP/CUSQL corrente
  • Da Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
  • Il carico di lavoro dell'applicazione comporta un uso frequente di tempdb (creazione e eliminazione di tabelle temporanee o variabili di tabella).
  • Si notano richieste utente in attesa di risorse di pagina tempdb a causa di conflitti di allocazione.
T1118
  • DA SQL Server 2012 RTM a SP/CU corrente
  • DA SQL Server 2014 RTM a SP/CU corrente
  • DA SQL Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
Miglioramenti della concorrenza per il database tempdb

NOTA Abilitare il flag di traccia e aggiungere più file di dati per il database tempdb.
  • Sono disponibili più file di dati tempdb.
  • I file di dati vengono inizialmente impostati sulla stessa dimensione.
  • A causa di un'attività intensa, i file tempdb riscontrano crescita e non tutti i file aumentano contemporaneamente e causano conflitti di allocazione.
T1117
  • DA SQL Server 2012 RTM a SP/CU corrente
  • DA SQL Server 2014 RTM a SP/CU corrente
  • DA SQL Server 2016 RTM a SP/CU corrente
  • DA SQL Server 2017 RTM a SP/CU corrente
Suggerimenti per ridurre la contesa dell'allocazione nel database tempdb di SQL Server
Conflitti di spinlock pesanti SOS_CACHESTORE o i piani vengono rimossi frequentemente nei carichi di lavoro di query ad hoc. T174 None
  • Le voci nella cache dei piani vengono rimosse a causa della crescita in altre cache o impiegati di memoria
  • Utilizzo elevato della CPU a causa di ricompilazione frequenti di query
T8032
  • DA SQL Server 2012 RTM a SP/CU corrente
  • DA SQL Server 2014 RTM a SP/CU corrente
None
Le statistiche esistenti non vengono aggiornate di frequente a causa del numero elevato di righe nella tabella. T2371
  • DA SQL Server 2012 RTM a SP/CU corrente
  • DA SQL Server 2014 RTM a SP/CU corrente
None
  • Il completamento dei processi delle statistiche richiede molto tempo.
  • Impossibile eseguire più processi di aggiornamento delle statistiche in parallelo.
T7471 DA SQL Server 2014 SP1 CU6 a SP/CU corrente None Miglioramento delle prestazioni delle statistiche di aggiornamento con SQL 2014 e SQL 2016
Il comando CHECKDB richiede molto tempo per i database di grandi dimensioni.
  • T2562
  • T2549
    • DA SQL Server 2012 RTM a SP/CU corrente
    • DA SQL Server 2014 RTM a SP/CU corrente
    None
    Il comando CHECKDB richiede molto tempo per i database di grandi dimensioni. T2566
    • DA SQL Server 2012 RTM a SP/CU corrente
    • DA SQL Server 2014 RTM a SP/CU corrente
    None
    L'esecuzione di query simultanee del data warehouse che richiedono tempi di compilazione lunghi comporta RESOURCE_SEMAPHORE_QUERY_COMPILE attese. T6498 Pacchetto di aggiornamento cumulativo da 6 per SQL Server 2014 a SP1
    • DA SQL Server 2014 SP2 a SP/CUSQL corrente
    • Da Server 2016 RTM a SP/CU corrente
    • DA SQL Server 2017 RTM a SP/CU corrente
    Le correzioni di Optimizer per problemi di prestazioni delle query specifiche vengono disabilitate per impostazione predefinita. T4199
    • Da SQL Server 2012 RTM a SP4
    • DA SQL Server 2014 RTM alla versione più recente
    None
    Si verificano prestazioni lente usando operazioni di query con tipi di dati spaziali.
    • T6532
    • T6533
    • T6534
    • DA SQL Server 2012 SP3 a SP/CU corrente
    • DA SQL Server 2014 SP2 a SP/CU corrente
      • DA SQL Server 2016 RTM a SP/CU corrente
      • DA SQL Server 2017 RTM a SP/CU corrente
        • Le query rilevano SOS_MEMORY_TOPLEVELBLOCKALLOCATOR e le attese CMEMTHREAD.
        • Lo spazio degli indirizzi virtuali disponibile è insufficiente per il processo di SQL Server.
        T8075
        • DA SQL Server 2012 SP2 CU8 a SP/CU corrente
        • DA SQL Server 2014 RTM CU10 a SP/CU corrente
        • DA SQL Server 2016 RTM a SP/CU corrente
        • DA SQL Server 2017 RTM a SP/CU corrente
        CORREZIONE: errore di memoria insufficiente quando lo spazio degli indirizzi virtuali del processo di SQL Server è insufficiente in SQL Server
        • SQL Server viene installato in un computer con grandi quantità di memoria.
        • La creazione di nuovi database richiede molto tempo.
        T3449
        • DA SQL Server 2012 SP3 CU3 a SP/CU corrente
        • DA SQL Server 2014 RTM CU14 a RTM CU corrente
        • DA SQL Server 2014 SP1 CU7 a SP/CU corrente
        • DA SQL Server 2016 RTM a SP/CU corrente
        • DA SQL Server 2017 RTM a SP/CU corrente
        CORREZIONE: la creazione di database di SQL Server in un sistema con un volume elevato di memoria richiede più tempo del previsto

        Tabella 2. Considerazioni generali e procedure consigliate per migliorare le prestazioni dell'istanza di SQL Server

        Esaminare il contenuto nella colonna Delle risorse online dell'articolo della Knowledge Base e prendere in considerazione l'implementazione delle linee guida nella colonna Azioni consigliate.

        Articolo della Knowledge Base/Risorsa online della Documentazione Azioni consigliate
        Configurare l'opzione di configurazione del server max degree of parallelism Usare la stored procedure sp_configure per apportare modifiche alla configurazione per Configurare l'opzione di configurazione del server max degree of parallelism per l'istanza di SQL Server in base all'articolo della Knowledge Base.
        Limiti della capacità di calcolo per edizione di SQL Server edizione Enterprise con licenza CAL (Server + Client Access License) è limitato a 20 core per ogni istanza di SQL Server. Non sono previsti limiti nel modello di licenza server basato su core. Prendere in considerazione l'aggiornamento dell'edizione di SQL Server allo SKU appropriato per sfruttare tutte le risorse hardware.
        Rallentamento delle prestazioni in Windows Server quando si usa il piano di risparmio energia "Bilanciato" Esaminare l'articolo e collaborare con l'amministratore di Windows per implementare una delle soluzioni indicate nella sezione "Risoluzione" dell'articolo.
        Assegnare manualmente i nodi NUMA ai gruppi K.
        Ottimizzare i carichi di lavoro ad hoc FORCED PARAMETERIZATION Le voci nella cache dei piani vengono rimosse a causa della crescita in altre cache o impiegati di memoria. È anche possibile che si verifichi la rimozione della cache dei piani quando la cache raggiunge il numero massimo di voci. Oltre al flag di traccia 8032 descritto in precedenza, prendere in considerazione l'opzione del server optimize for ad hoc workloads e anche l'opzione di database FORCED PARAMETERIZATION .
        Come ridurre il paging della memoria del pool di buffer nella configurazione della memoria di SQL Server e considerazioni sul ridimensionamento in SQL Server 2012 e versioni successive Assegnare il diritto utente Abilita le pagine di blocco in memoria (Windows) all'account di avvio del servizio SQL. Vedere Come abilitare la funzionalità "pagine bloccate" in SQL Server 2012. Impostare la memoria massima del server su circa il 90% della memoria fisica totale. Assicurarsi che le opzioni di configurazione della memoria del server siano account per la memoria solo dai nodi configurati per l'uso delle impostazioni affinity mask.
        Informazioni su SQL Server e pagine di grandi dimensioni... Opzioni di ottimizzazione per SQL Server durante l'esecuzione in carichi di lavoro a prestazioni elevate Valutare la possibilità di abilitare TF 834 se si dispone di un server con una grande quantità di memoria, in particolare con un carico di lavoro di data warehousing analitico o dati. Tenere presente che TF 834 non è consigliato se si usano indici columnstore.
        Descrizione delle opzioni "access check cache bucket count" e "access check cache quota" disponibili nella stored procedure sp_configure Usare le opzioni di configurazione del server di controllo di accesso per configurare questi valori in base alle raccomandazioni nell'articolo della Knowledge Base. I valori consigliati per i sistemi di fascia alta sono i seguenti:
        "access check cache bucket count": 256
        "access check cache quota": 1024

        Hint per la concessione di memoria ALTER WORKLOAD GROUP Se sono presenti molte query che esauriscono concessioni di memoria di grandi dimensioni, ridurre request_max_memory_grant_percent il gruppo di carico di lavoro predefinito nella configurazione di Resource Governor dal 25% predefinito a un valore inferiore. Sono disponibili nuove opzioni di concessione di memoria query (min_grant_percent e max_grant_percent) in SQL Server
        Inizializzazione immediata dei file Collaborare con l'amministratore di Windows per concedere all'account del servizio SQL Server il diritto utente "Esegui attività di manutenzione volume" in base alle informazioni contenute nella documentazione online.
        Considerazioni sulle impostazioni "aumento automatico" e "autoshrink" in SQL Server Controllare le impostazioni correnti del database e assicurarsi che siano configurate in base alle raccomandazioni riportate nell'articolo della Knowledge Base.
        Checkpoint di database (SQL Server) Valutare la possibilità di abilitare checkpoint indiretti nei database utente per ottimizzare il comportamento di I/O in SQL Server 2012 e 2014.
        CORREZIONE: sincronizzazione lenta quando i dischi hanno dimensioni del settore diverse per i file di log della replica primaria e secondaria negli ambienti di disponibilità e logshipping di SQL Server Se si dispone di un gruppo di disponibilità in cui il log delle transazioni nella replica primaria si trova su un disco con dimensioni del settore a 512 byte e il log delle transazioni della replica secondaria si trova in un'unità con dimensioni di settore 4K, è possibile che si verifichi un problema a causa del quale la sincronizzazione è lenta. In questi casi, l'abilitazione di TF 1800 deve risolvere il problema. Per altre informazioni, vedere Flag di traccia 1800.
        Se SQL Server non è già associato alla CPU e un sovraccarico da 1,5% a 2% è trascurabile per i carichi di lavoro, è consigliabile abilitare TF 7412 come flag di traccia di avvio. Questo flag abilita la profilatura leggera in SQL Server 2014 SP2 o versione successiva, che consente di eseguire la risoluzione dei problemi delle query in tempo reale negli ambienti di produzione.

        Tabella 3. Correzioni delle prestazioni incluse in un aggiornamento cumulativo

        Esaminare la descrizione nella colonna Sintomi e applicare gli aggiornamenti necessari nella colonna Aggiornamento richiesto negli ambienti applicabili. Per altre informazioni sui rispettivi problemi, vedere l'articolo della Knowledge Base. Questi consigli non richiedono l'abilitazione di flag di traccia aggiuntivi come parametri di avvio. È sufficiente applicare l'aggiornamento cumulativo o il Service Pack più recente che include queste correzioni per ottenere il vantaggio.

        Nota

        Il nome cu nella colonna Aggiornamento richiesto fornisce il primo aggiornamento cumulativo di SQL Server che risolve questo problema. Un aggiornamento cumulativo contiene tutti gli hotfix e tutti gli aggiornamenti inclusi nella versione precedente dell'aggiornamento di SQL Server. È pertanto consigliabile installare l'aggiornamento cumulativo più recente per risolvere i problemi.

        Sintomi Aggiornamento necessario Articolo della Knowledge Base
        Le scritture eager durante la selezione per le tabelle temporanee causano problemi di prestazioni. SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        CORREZIONE: prestazioni scarse in I/O quando si esegue la selezione nell'operazione di tabella temporanea in SQL Server 2012
        Si verifica PWAIT_MD_RELATION_CACHE o MD_LAZYCACHE_RWLOCK si attende dopo l'interruzione di un'operazione ALTER INDEX ... ONLINE di query. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        FIX: le prestazioni diminuiscono dopo un'istruzione ALTER INDEX... L'operazione ONLINE viene interrotta in SQL Server 2012 o SQL Server 2014
        Le query eseguono improvvisamente prestazioni scarse nell'edizione standard del prodotto. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREZIONE: i thread non sono pianificati in modo uniforme in SQL Server 2012 o SQL Server 2014 edizione Standard
        Rallentamento delle prestazioni a causa di un calo improvviso dell'aspettativa di vita di Page. SQL Server 2012 SP1 CU4 CORREZIONE: potrebbero verificarsi problemi di prestazioni in SQL Server 2012
        Utilizzo elevato della CPU da parte del monitoraggio delle risorse nei sistemi con configurazione NUMA, memoria di grandi dimensioni e "max server memory" impostato su un valore basso. SQL Server 2012 SP1 CU3 CORREZIONE: picco della CPU quando non è presente alcun carico in un server dopo l'installazione di SQL Server 2012 nel server
        Utilità di pianificazione senza rendimento durante l'allocazione della memoria per le esecuzioni di ordinamento associate a concessioni di memoria di grandi dimensioni nei sistemi con grande quantità di memoria installata. SQL Server 2012 SP1 CU2 CORREZIONE: Errore 17883 quando si esegue una query in un server con molte CPU e una grande quantità di memoria in SQL Server 2012 o in SQL Server 2008 R2
        Utilità di pianificazione senza rendimento quando l'operatore di ordinamento attraversa molti bucket nel pool di buffer nei sistemi con memoria elevata. SQL Server 2012 SP1 CU1 FIX: "Il processo sembra non produrre nell'Utilità di pianificazione" messaggio di errore quando si esegue una query in SQL Server 2012
        Utilizzo elevato della CPU quando si eseguono query simultanee che richiedono molto tempo per la compilazione in sistemi con più nodi NUMA e molti core. SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        CORREZIONE: il carico di lavoro di compilazione di query intenso non viene ridimensionato con un numero crescente di core nell'hardware NUMA e comporta la saturazione della CPU in SQL Server
        Le allocazioni di memoria per gli operatori di ordinamento richiedono molto tempo per il completamento nei sistemi NUMA con memoria elevata a causa di allocazioni di nodi remoti. SQL Server 2012 SP1 CU3 CORREZIONE: problemi di prestazioni di SQL Server negli ambienti NUMA
        Errori di memoria insufficiente quando SQL Server viene installato in un computer NUMA con grandi quantità di RAM e SQL Server ha molte pagine esterne. SQL Server 2012 RTM CU1 CORREZIONE: errore di memoria insufficiente quando si esegue un'istanza di SQL Server 2012 in un computer che usa NUMA
        Contesa di spinlock su SOS_CACHESTORE e SOS_SELIST_SIZED_SLOCK quando si compila un indice sul tipo di dati spaziali in una tabella di grandi dimensioni. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREZIONE: prestazioni lente in SQL Server 2012 o SQL Server 2014 quando si compila un indice in un tipo di dati spaziali di una tabella di grandi dimensioni
        Tipo di attesa CMEMTHREAD elevato quando si compila un indice in un tipo di dati spaziali in tabelle di grandi dimensioni. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREZIONE: prestazioni lente in SQL Server quando si compila un indice in un tipo di dati spaziali di una tabella di grandi dimensioni in un'istanza di SQL Server 2012 o SQL Server 2014
        Problemi di prestazioni a causa di e CMEMTHREAD attende durante l'allocazione di SOS_PHYS_PAGE_CACHE memoria nei computer con memoria di grandi dimensioni. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORREZIONE: si verificano problemi di prestazioni in ambienti NUMA durante l'elaborazione di pagine esterne in SQL Server 2012 o SQL Server 2014
        Il comando CHECKDB richiede molto tempo per i database di grandi dimensioni. Pacchetto di aggiornamento cumulativo 6 per SQL Server 2014 CORREZIONE: il comando DBCC CHECKDB/CHECKTABLE potrebbe richiedere più tempo in SQL Server 2012 o SQL Server 2014

        Note importanti

        Riferimenti

        Si applica a

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • SQL Server 2014 Developer
        • SQL Server 2014 R2
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server 2012 Business Intelligence
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core