SqlServer e parallelismo, la chiave per incrementare le performance in pochi secondi

Nelle configurazioni di SQLServer c’è una sezione denominata Parallelismo.

Questa sezione contiene due chiavi che di default sono impostate con dei parametri eccessivamente aggressivi, e che non danno beneficio nella maggior parte dei casi. Agendo su queste due chiavi, si può migliorare le perfomance senza operare complesse attività di tuning.

  1. Massimo grado di parallelismo (Maximum Degree of Parallelism) è impostato di default a 0, il che significa senza limiti. Fa da se che SqlServer utilizza tutte le CPU disponibili durante l’esecuzione di una query. Se eseguiamo esclusivamente query molto pesanti e su un grandissimo numero di dati, questa configurazione è corretta, ma in un uso applicativo, questo approccio limita la concorrenza, creando dei colli di bottiglia. E’ preferibile limitare il parallelismo dai un numero di socket che permetta un livello di concorrenza sostenibile.

    Ad esempio, un una configurazione con 4 core, sentiamo il valore a 2.

  2. Costo soglia per parallelismo (Cost Threshold for Parallelism) è impostato di default a 5. E’ un valore un pò troppo basso, che induce l’ottimizzatole a valutare piani alternativi di esecuzione che possano utilizzare più thread contemporaneamente.

Anche questa impostazione è ideale per applicazioni di BI o OLTP, ma totalmente inadeguato per applicazioni con IO dati generico, come CRM e gestionali.

Va assolutamente aumentato ad almeno 30, ma c’è chi consiglia di portarlo anche a 50.

Personalmente ho riscontrato un beneficio immediato da un cliente che lamentava rallentamenti, con un crollo del carico della CPU dal 70% al 30% e un immediato raddoppio delle operazioni batch eseguite al secondo. Un must per l’ottimizzazione delle performance.

Sono delle impostazioni poco note ai più, ma fidatevi che avrete un server molto più performante con un operazione di pochi secondi.

Windows 10 bloccato alla build 10240

L’altro giorno sono tornato a casa e ho trovato il PC con Windows completamente andato, dopo un Windows Update.
Non c’è stato modo di ripristinarlo, quindi ho deciso di ripartire con un installazione pulita.

Reinstallato tutto, ho ripristinato tutte le applicazioni che uso abitualmente (grazie Chocolatey), ma mi sono accorto che Docker per Windows non partiva dicendo che non avevo una build 10586 o superiore.

A quel punto ho iniziato ad indagare, perchè Windows Update mi diceva che non ci sono aggiornamenti, e così ho scoperto che ci sono altre persone bloccate a questa build.

La soluzione che mi ha permesso di superare l’empasse è la seguente:

Andate su https://www.microsoft.com/en-gb/software-download/windows10 e scaricate Windows 10 Creators Update. (Precedentemente si era installa da sola).

A quel punto basta seguire i vari passaggi per avere Windows aggiornato all’ultima build.

Tutto qui, ma come al solito le cose semplici se nessuno te le dice diventano complicate.