Gestire un database di grandi dimensioni diventa più facile grazie a strumenti come SQL Server a patto che a monte ci sia un percorso di monitoring e, soprattutto, tuning adeguato.
Cosa significa questo? Prendiamo spunto da un concetto orientale prestato alla lean production: il kaizen. Ovvero il raggiungimento della perfezione attraverso piccoli miglioramenti. Bisogna analizzare, ottimizzare, riprovare e verificare ancora.
Questo è il ciclo di Deming, che prende nome dal famoso ingegnere (William Edwards Deming) che ha dato tanto all’organizzazione aziendale. Ogni aspetto di un universo organizzato deve essere migliorato, ottimizzato, seguendo un approccio data driven. Questo vale anche per il tuo programma di gestione database, ecco perché dobbiamo affrontare l’argomento.
Indice dei contenuti
Cos’è il SQL Server Performance Tuning
Con questo concetto intendiamo tutte le pratiche e le tecniche necessarie per migliorare le prestazioni del programma necessario alla gestione del database (Database Management System – DBMS). Obiettivo di queste operazioni è quello di garantire una maggiore:
- Stabilità dell’infrastruttura.
- Velocità delle operazioni.
- Sicurezza dei dati.
Ciò avviene attraverso un percorso: garantire che le query impegnative vengano eseguite rapidamente, utilizzando il minor numero di risorse. Non è l’unico aspetto che il lavoro di SQL Server Tuning risolve: questo percorso identifica e affronta di problemi di configurazione del software e di progettazione del database.
Quali sono i risultati che ci aspettiamo?
Lo scopo principale è l’efficienza della ricerca e scrittura nel database. Un database che, nelle grandi aziende e nelle attività con ambienti mission-critical, non può permettersi un millisecondo in più di ritardo.
Questo ti consente di proporre un servizio adatto alle necessità, che non riguardano solo la velocità di esecuzione ma anche la stabilità dei risultati e la sicurezza di un database che cresce ogni giorno. E che viene utilizzato da clienti che esigono determinati standard.
Il tuning di SQL Server consente di identificare e rimuovere i colli di bottiglia, migliorare le performance, evitare blocchi del sistema. Risparmi risorse del server e scegli le infrastrutture meno onerose aumentando quantità di dati archiviati su un disco.
Lato utente, l’ottimizzazione delle query migliora l’UX: le maschere sono più reattive dato che per ottenere risposta dal database devono attendere meno tempo.
Come fare un lavoro di SQL Server Tuning?
Il percorso di miglioramento progressivo e continuo coinvolge materie differenti che riguardano, in buona sintesi, ottimizzazione delle query, indicizzazione e normalizzazione dei dati, parametrizzazione, uso di procedure memorizzate e l’ottimizzazione dell’hardware.
C’è da aggiungere un punto: prima di ottimizzare e migliorare bisogna monitorare SQL Server perché conosciamo la centralità dei dati. Sono la base empirica che ci permettono di capire su cosa dobbiamo concentrarci nel lavoro di SQL Server Tuning.
Aggiornare SQL Server con gli ultimi CU
Un punto di partenza che addirittura precede le prime operazioni materiali per migliorare le performance di SQL Server: aggiornare e utilizzare i cumulative update. In questo modo si possono risolvere eventuali problemi e sfruttare i miglioramenti che vengono proposti.
Assicurati che la base sia solida
La prima verifica che deve essere fatta riguarda la bontà dell’infrastruttura, devi assicurarti che il database sia stato progettato per un determinato compito e che l’hardware risulti ancora valido a fronte dell’evoluzione del carico di lavoro. Attenzione a eventuali installazioni di default: quasi sempre le configurazioni di default sono inadeguate e anche le best practice per hardware e hypervisor vengono bypassate.
Verificare wait (attese) e query
Il passo successivo, come suggerito, è quello di fare una giusta analisi della condizione di partenza per comprendere eventuali problemi dal punto di vista delle attese e delle richieste che hanno bisogno di maggiori risorse.
Rispetto al primo punto, per analizzare le attese è possibile interrogare le statistiche di SQL con la vista di sistema sys.dm_os_wait_stats
e per Azure SQL Database invece usiamo sys.dm_db_wait_stats
. In ogni caso, uno degli strumenti ideali è il Query Store perché offre informazioni utili alla scelta e alle performance del piano query usato per SQL Server.
“Archivio query acquisisce una cronologia delle query, dei piani e delle statistiche di runtime e li conserva per la consultazione. I dati vengono separati in base a intervalli di tempo, consentendo di visualizzare i modelli di utilizzo del database e capire quando sono state apportate modifiche al piano di query nel server”.
Questo strumento può aiutarti a migliorare le prestazioni delle tue ricerche individuando quelle con esecuzione lenta e di lunga durata, suggerendo modi per migliorare l’efficienza del server del database. Inoltre, può aiutarti a capire in che modo i modelli modificano le prestazioni complessive del tuo database individuando potenziali colli di bottiglia.
Ottimizzare le query più onerose
Individuate le richieste più lente e onerose – anche con altri tool inclusi nel software come Performance Monitor, Profiler – puoi procedere con le attività di ottimizzazione. Che può avvenire applicando i giusti indici oppure riscrivendo la query evitando dati ridondanti e migliorando la coerenza. Questo ti consente di avere delle richieste più veloci ed efficaci. Ovviamente tutto dipende dal caso, non c’è una regola universale. Vogliamo fare un esempio concreto? Ecco un caso illustrato su questo post di LinkedIn:
SELECT customer_name, order_date, order_total
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
WHERE order_date >= '2022-01-01' AND order_date <= '2022-12-31'
Come procedere con l’ottimizzazione della query? Riscrivi il contenuto sfruttando l’operatore BETWEEN
al posto degli operatori maggiore di e minore di. Ecco l’evoluzione:
SELECT customer_name, order_date, order_total
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31'
Strumenti come Database Engine Tuning Advisor (DTA) permettono, una volta inserite delle query, di ottenere delle ottimizzazioni che puoi mettere in pratica. A patto che ogni output venga valutato con cura: non è sempre valido il risultato proposto.
Verificare che i piani di esecuzione vengono riutilizzati
Dopo aver ottimizzato le query ed eliminato gli indici superflui, bisogna controllare un altro punto: il piano di esecuzione – rappresentazione dettagliata di come il motore di database intende eseguire una specifica richiesta – deve essere riutilizzato quando necessario.
Questo perché la CPU usa un gran numero di risorse per il calcolo del piano di esecuzione e la buona notizia è che possiamo eliminare questo peso. In che modo? Implementando procedure memorizzate con dei parametri. Altrimenti possiamo utilizzare sp_executesql per avviare istruzioni T-SQL quando l’unica modifica riguarda i valori dei parametri.
Per visualizzare le statistiche della cache del piano nel SQL Server Management Studio (SSMS) bisogna andare su Management, poi in Statistics e infine su Plan Cache. È possibile utilizzare le DMO o l’API REST di SQL Server per visualizzare e analizzare i piani.
Chi mi aiuta nel lavoro di SQL Server Tuning?
Per ottimizzare le performance del tuo database hai bisogno di competenze precise e puntuali.
Contattaci attraverso il form qui sotto e richiedi subito un check-up del tuo database per analizzare i problemi di performance che rallentano le tue applicazioni aziendali.
Desideri parlare con un nostro esperto? Contattaci
Ultime News Data Center
-
-
Quali sono le differenze tra SQL Server e Oracle?
13 Maggio 2024 -
Cos’è e come fare monitoraggio di Microsoft SQL Server
23 Aprile 2024 -
Guida SQL Server, tutto quello che devi sapere
19 Aprile 2024 -
FaaS: Cos’è, Come funziona, Vantaggi, Casi d’uso ed Esempi
26 Febbraio 2024 -
Cos’è un server, come funziona, tipologie
15 Febbraio 2024 -
Data Governance: Cos’è, Importanza, Strumenti e Best Practices
13 Febbraio 2024
Gestione dati e analisi
-
Tutte le novità di SQL Server e le funzionalità aggiuntive
18 Luglio 2024 -
Come fare manutenzione dei database SQL Server
8 Luglio 2024 -
OLTP: Cos’è, Come funziona, Vantaggi ed Esempi
28 Dicembre 2023 -
OLAP: Cos’è, Come funziona, Caratteristiche e Tipologie
27 Novembre 2023 -
OLTP vs OLAP: Cosa sono, Differenze, Vantaggi e Svantaggi
8 Ottobre 2023 -
ETL vs ELT: differenze chiave e il migliore
25 Settembre 2023 -
Data mesh: cos’è, differenze e architettura
14 Settembre 2023