Dal rilascio di SQL Server 2016 Service Pack 1 il 16 novembre 2016, con molte utili funzionalità relative alla programmabilità che in precedenza erano disponibili solo in Enterprise Edition, è diventato molto più fattibile per molte organizzazioni scegliere di proposito di utilizzare SQL Server 2016 Standard Edition rispetto al passato.
Se stai pensando di farlo, devi essere a conoscenza di alcuni problemi e insidie comuni che potresti incontrare durante l'installazione e l'utilizzo di SQL Server 2016 Standard Edition su un nuovo server con hardware moderno.
Limiti di memoria e configurazione
Il primo problema riguarda i limiti di licenza per istanza per SQL Server 2016 Standard Edition. Il primo limite di licenza è la quantità di memoria che puoi usare per il pool di buffer per ogni istanza di SQL Server 2016 Standard Edition, che è di soli 128 GB, proprio come in SQL Server 2014 Standard Edition. Personalmente, penso che questo limite sia artificialmente basso data la densità di memoria dei moderni server a due socket, ma è un limite che dobbiamo affrontare.
Gli attuali server a due socket che utilizzano i processori della famiglia di prodotti Intel Xeon E5-2600 v4 possono utilizzare fino a 12 DIMM per processore, mentre i DIMM DDR4 ECC da 32 GB sono la capacità più elevata che sono anche convenienti per GB. Ogni server con questa famiglia di processori ha 4 canali di memoria per processore, con ogni canale che supporta fino a 3 DIMM. Un server a due socket completamente popolato con ventiquattro DIMM da 32 GB avrebbe 768 GB di RAM, che è molto più di quanto sia consentito utilizzare una singola istanza di SQL Server 2016 Standard Edition.
Poiché SQL Server 2016 Standard Edition ha un limite di memoria per istanza così basso, dovresti scegliere di proposito una configurazione di memoria appropriata che ti consenta di utilizzare tutta la memoria con limite di licenza ottenendo anche le migliori prestazioni di memoria possibili. Popolando solo un DIMM per canale di memoria otterrai le migliori prestazioni di memoria in assoluto supportate dai tuoi processori.
I principali fornitori di server, come Dell, offrono indicazioni dettagliate sulle possibili configurazioni di memoria per i propri server, a seconda del numero e del tipo specifico di processore selezionato. Per SQL Server 2016 Standard Edition in un server a due socket con due processori della famiglia Intel Xeon E5-2600 v4, la scelta di otto DIMM DDR4 da 32 GB ti darebbe 256 GB di RAM, in esecuzione alla velocità massima supportata di 2400 MT/s.
Ciò ti consentirebbe di impostare la memoria massima del server (per il pool di buffer) su 131.072 MB (128 GB) e di avere ancora molta memoria rimasta per il sistema operativo e per il possibile utilizzo da parte degli indici columnstore e OLTP in memoria. Avresti anche sedici slot DIMM vuoti che potrebbero essere utilizzati per la futura espansione della RAM (di cui potresti trarre vantaggio se eseguissi un aggiornamento dell'edizione successiva all'edizione Enterprise). Un altro utilizzo per alcuni di quegli slot DIMM vuoti sarebbe per la "coda della cache del log" su NVDIMM (che è supportato in SQL Server 2016 Standard Edition con SP1).
Limiti della licenza del processore
SQL Server 2016 Standard Edition è anche limitato a un minimo di quattro socket o 24 core del processore fisico. Con le famiglie di processori attuali e future di Intel e AMD che avranno fino a 32 core fisici, è molto facile superare inavvertitamente il limite di core del processore per istanza, con una serie di conseguenze disastrose per prestazioni e costi di licenza.
Il primo effetto negativo di questa operazione è il modo in cui SQL Server 2016 Standard Edition allocherà i core fisici con limite di licenza disponibili tra i nodi NUMA. Ad esempio, se si dispone di un nuovo server a due socket con due processori Intel Xeon E5-2697A v4 a 16 core, per impostazione predefinita, SQL Server 2016 Standard Edition utilizzerà sedici core fisici sul nodo NUMA 0 e solo otto core su NUMA nodo 1, che è una configurazione sbilanciata che non funzionerà come potrebbe. Puoi risolvere questo problema con un comando ALTER SERVER CONFIGURATION come descrivo qui.
Per aggiungere la beffa al danno in questa situazione, Microsoft si aspetta anche che tu acquisti licenze core per tutti i 32 core fisici nella macchina, anche se ti è consentito utilizzare solo 24 core fisici per istanza. Si tratterebbe di un costo di licenza aggiuntivo di circa $ 15.000, per le licenze principali che non potresti utilizzare, a meno che tu non decida di eseguire più istanze sulla stessa macchina host. Il costo aggiuntivo della licenza pagherebbe per un tipico server a due socket, a seconda di come è stato configurato.
Un'altra trappola comune che dovresti evitare con la Standard Edition è la creazione di una macchina virtuale con più di quattro socket. In tal caso, SQL Server Standard Edition utilizzerà solo quattro socket a causa del limite di licenza socket.
Selezione del processore
Attualmente, la famiglia di processori Intel Xeon più moderna per server a due socket è la famiglia di prodotti Intel Xeon E5-2600 v4 a 14 nm (Broadwell-EP) che è stata rilasciata nel primo trimestre del 2016. Intel è sul punto di rilasciare la prossima generazione di Intel a 14 nm Xeon E5-2600 v5 (Skylake-EP), già disponibile su Google Cloud Platform. La mia ipotesi è che questi nuovi processori (che richiederanno nuovi server modello) saranno disponibili pubblicamente nel secondo trimestre del 2017.
Dato questo limite di 24 licenze di base fisiche, è estremamente importante di non selezionare un processore con più di 12 core fisici (se si prevede di popolare entrambi i socket di un server a due socket). Ciò limita in qualche modo la tua selezione di SKU del processore, ma ci sono ancora quattro ottime scelte disponibili, come mostrato nella Tabella 1.
Modello | Core | Est. Punteggio del sistema TPC-E | Punteggio/Nucleo fisico | Costo della licenza |
---|---|---|---|---|
Xeon E5-2687W v4 | 24 | 3.673,00 | 153.04 | $ 44.592,00 |
Xeon E5-2667 v4 | 16 | 2.611,91 | 163.24 | $ 29.728,00 |
Xeon E5-2643 v4 | 12 | 2.081,36 | 173.44 | $ 22.296,00 |
Xeon E5-2637 v4 | 8 | 1.428,39 | 178,54 | $ 14.864,00 |
Tabella 1:metriche comparative del processore di sistema a due socket
La tabella 1 mostra i core fisici totali, il punteggio TPC-E stimato, il punteggio TPC-E stimato/core fisico e il costo totale della licenza di SQL Server 2016 Standard Edition per un sistema a due socket, popolato con due dei processori selezionati. Potresti notare che ho un processore a dodici core, un processore a otto core, un processore a sei core e un processore a quattro core, ma non c'è un processore a dieci core nella Tabella 1. Questo è in base alla progettazione, poiché il tre modelli di processori a dieci core disponibili sono tutti pessimi scelte per SQL Server, a causa delle loro velocità di clock di base molto basse.
Il punteggio TPC-E stimato per l'intero sistema è una misura della capacità totale della CPU del sistema, mentre il punteggio/core è una misura delle prestazioni della CPU a thread singolo di quel processore specifico.
Riepilogo
Se desideri le migliori prestazioni possibili al minor costo di hardware e licenza di SQL Server per un'istanza di SQL Server 2016 Standard Edition, dovresti scegliere una configurazione di memoria che utilizzi solo un DIMM per canale di memoria (ovvero otto DIMM in totale in un sistema a due socket con due processori della famiglia Intel Xeon E5-2600 v4).
Dovresti anche scegliere di proposito uno dei quattro processori elencati nella Tabella 1. Qualsiasi altra scelta di processore è un errore potenzialmente costoso da questo punto di vista.
Infine, se si intende utilizzare SQL Server 2016 Standard Edition, è necessario esaminare e verificare se l'estensione del pool di buffer (BPE) può favorire le prestazioni con il carico di lavoro. A seconda del carico di lavoro, anche la memorizzazione nella cache "tail of the log" su un NVDIMM potrebbe essere molto vantaggiosa per le prestazioni del registro delle transazioni.