Le dichiarazioni SQL sono il mezzo principale attraverso il quale le aziende e le organizzazioni recuperano informazioni dal database. Tuttavia, queste istruzioni non sono sempre composte in modo efficiente come potrebbero essere, il che può portare a rallentamenti del server. Ecco perché si sente parlare così tanto di ottimizzazione delle query SQL – è un processo necessario se si spera di garantire alti livelli di prestazioni del server.

DNS_DPM_Banner_Square_200x200

Parte del processo di ottimizzazione e messa a punto di SQL comporta calibrazioni regolari delle query SQL. Diverse query SQL possono essere utilizzate per recuperare le stesse informazioni, ma non tutte le query sono efficienti, quindi è importante assicurarsi di utilizzare le query giuste per ottimizzare il modo in cui i dati vengono estratti dai database e dai server SQL. Fortunatamente, ci sono strumenti in grado di aiutarvi con questo processo di ottimizzazione delle prestazioni delle query SQL. In questa guida, sottolineo perché l’ottimizzazione delle query SQL è importante e quali strumenti è possibile utilizzare per migliorare l’ottimizzazione delle prestazioni delle query SQL come SolarWinds® Database Performance Analyzer.

La necessità dell’ottimizzazione delle query SQL
Come controllare e migliorare le prestazioni delle query
Migliori pratiche di ottimizzazione del server SQL
Benefici degli strumenti di ottimizzazione del server SQL
Migliori strumenti di ottimizzazione delle prestazioni delle query SQL

La necessità dell’ottimizzazione delle query SQL

Le query SQL lente o inefficaci possono causare diversi problemi alle aziende e alle organizzazioni. Considerando che i clienti si aspettano che i siti web rispondano rapidamente alle loro ricerche, ritardi significativi nel tempo di risposta del database possono portarli a portare i loro affari altrove. Mentre pochi millisecondi di ritardo potrebbero non sembrare molto per azioni o processi individuali, possono rapidamente aggravarsi se sparsi in un’intera azienda o business.

Il tuning del SQL aiuta a rendere il codice più efficiente, che è una parte importante per mantenere le query del database in modo ottimale. Tuttavia, fare l’ottimizzazione delle prestazioni e il tuning a mano è una perdita di tempo e di risorse per gli amministratori di database. È anche incline all’errore umano, in quanto richiede che gli amministratori abbiano le abilità e le competenze non solo per essere in grado di localizzare le query sottoperformanti, ma anche per sapere come correggere il codice. Questo richiede la conoscenza delle principali istruzioni SQL e dei tipi di attesa, così come le query bloccate e la comprensione di come funzionano gli indici, tutte cose che gli strumenti di tuning rendono più facili da gestire.

Come controllare e migliorare le prestazioni delle query

Una delle domande più comuni durante questo processo è su come controllare le prestazioni delle query in SQL Server, un comune database basato su SQL. Se vi state chiedendo come controllare le prestazioni del database in SQL Server, fareste bene ad iniziare con l’analisi delle vostre query e il miglioramento delle loro prestazioni. Per iniziare con l’ottimizzazione delle query SQL in SQL Server, dovreste considerare questi passi fondamentali:

  • Quando iniziate il processo di ottimizzazione di un database, prima assicuratevi di guardare le tabelle (non le viste), e poi prendete nota del numero di righe. Successivamente, filtrare il numero di righe esaminando le clausole WHERE e JOIN.
  • Vorrà poi assicurarsi che le tabelle siano il più selettive possibile quando si lavora con piccoli set di dati.
  • In seguito, esaminare le colonne della query per SELECT * e funzioni scalari che potrebbero recuperare più informazioni di quelle richieste dalla query. Considerate di rendere l’indice ricercabile – questo rimuove la necessità di eseguire una scansione completa sul database.
  • Poi guardate le chiavi, i vincoli e gli indici esistenti per evitare duplicazioni e sovrapposizioni. Prendete nota della definizione della chiave primaria e se è clusterizzata.
  • Ora siete pronti per eseguire il piano di esecuzione. Assicuratevi che le statistiche siano attive prima di farlo. Una volta che il piano è stato eseguito, esaminate le letture logiche – meno I/O logici significa che la query viene eseguita più velocemente – e registrate i risultati.
  • Regolate la query concentrandovi sulle operazioni più costose, poi eseguitela di nuovo. Confrontate i risultati.
  • Se necessario, considerate di aggiustare gli indici per includere un indice di copertura o di filtraggio (anche se non dovreste usare quest’ultimo se avete dichiarazioni parametrizzate).

Best practice per l’ottimizzazione del server SQL

tips for sql query optimization

Per ottimizzare le prestazioni del database SQL, questi consigli generali per l’ottimizzazione delle query e del database possono aiutare a migliorare le prestazioni a livello sintattico.

Scegliete SELECT Fields piuttosto che SELECT *

Un modo semplice per ridurre il carico di lavoro di ogni query su un database è quello di limitare la quantità di informazioni che ogni query recupera. All’inizio del processo di esecuzione delle query, molti sviluppatori usano l’istruzione SELECT *, che recupera tutte le informazioni disponibili memorizzate in una tabella del database. Con tabelle di grandi dimensioni con più campi e righe, l’uso delle istruzioni SELECT * crea un drenaggio delle risorse del database recuperando potenzialmente grandi quantità di dati non necessari.

Utilizzando le istruzioni SELECT con campi più specificamente definiti, gli amministratori possono dirigere le query per recuperare solo le informazioni necessarie.

Evitare le istruzioni SELECT DISTINCT

Mentre lo stato SELECT DISTINCT è utile per rimuovere i duplicati da una query, esso utilizza una grande quantità di potenza di elaborazione. Per evitare di rallentare le prestazioni della query, è possibile selezionare più campi per generare risultati unici.

Definire i filtri con WHERE invece di HAVING

L’obiettivo primario del tuning SQL è l’efficienza, e nell’ordine delle operazioni SQL, le clausole WHERE saranno calcolate prima delle dichiarazioni HAVING. Questo le rende più efficienti per definire i filtri, perché limiteranno il numero di record recuperati dal database. Tuttavia, le dichiarazioni HAVING dovrebbero essere usate quando si filtra su campi aggregati.

Mantenere i caratteri jolly alla fine delle frasi

I caratteri jolly sono utili per creare ricerche estremamente ampie, che corrono anche il rischio di essere inefficienti. Accoppiare un carattere jolly iniziale con un carattere jolly finale lo è in modo particolare, poiché interrogherà il database per tutti i record di testo che corrispondono a ciò che si trova tra i due caratteri jolly. Se si cercano i nomi dei clienti, per esempio, %Son% recupererebbe sia “Sonia” che “Richardson,” mentre Son% restituirebbe solo “Sonia.”

Utilizzare LIMIT per campionare i risultati delle query

L’utilizzo di un’istruzione LIMIT prima di eseguire una query permetterà agli amministratori del database di esaminare rapidamente un numero specifico di risultati per determinare se la query ha bisogno di ulteriori raffinamenti. Le query che potenzialmente restituiscono un gran numero di risultati sono molto impegnative da eseguire sui database e l’utilizzo di un’istruzione LIMIT semplifica il processo di verifica delle modifiche apportate alla query.

Utilizzare INNER JOIN piuttosto che WHERE per le Join

Mentre alcuni sviluppatori SQL preferiscono utilizzare le clausole WHERE quando fanno le join, questo corre il rischio di creare quella che è conosciuta come una Cartesian Join. Chiamati anche prodotti cartesiani o CROSS JOINs, questi join generano tutte le possibili combinazioni delle variabili elencate nell’istruzione SQL. Questo può causare rapidamente problemi con grandi database perché tutte le possibili combinazioni da due tabelle ricche di dati potrebbero facilmente generare miliardi, se non trilioni, di risultati. La clausola INNER JOIN evita ampiamente questo problema.

Back top top

Benefici degli strumenti di tuning di SQL Server

Mentre il tuning delle query SQL può essere fatto manualmente, è un processo complicato e che richiede tempo, ecco perché l’uso di strumenti di tuning SQL può permettere agli amministratori di database di massimizzare in modo più efficiente le prestazioni dei loro server e database. Gli strumenti di tuning delle prestazioni delle query SQL sono una parte essenziale di un monitoraggio completo per SQL Server, che a sua volta libera gli amministratori e il personale di supporto tecnologico per dedicare la loro attenzione alla risoluzione di problemi più critici.

I migliori strumenti di ottimizzazione delle query SQL includono tre funzioni principali:

  1. tuning SQL: Questo si riferisce alla capacità dello strumento di riscrivere il codice dell’istruzione SQL per migliorare le prestazioni dei server e dei database.
  2. Monitoraggio dei database basati su cloud: Con lo spostamento verso il cloud computing e il networking, molte applicazioni di tuning SQL ora includono la capacità di monitorare i database indipendentemente da dove sono alloggiati.
  3. Ottimizzazione online: La capacità di accedere in remoto e ottimizzare le query da dispositivi mobili e browser web, invece di doverlo fare da una postazione di lavoro dedicata in un determinato luogo fisico, rende il processo di tuning degli statement SQL molto più comodo da navigare.

Gli strumenti di tuning forniscono funzionalità aggiuntive e facilità d’uso per l’ottimizzazione delle query SQL. Le applicazioni di tuning di SQL Server monitorano le prestazioni del database e spesso forniscono interfacce utente con rappresentazioni grafiche delle prestazioni delle query e dei tempi di attesa, che possono aiutare gli amministratori a identificare i colli di bottiglia delle risorse con maggiore velocità e precisione. Creando un registro storico delle metriche di performance, questi strumenti di monitoraggio sono una parte inestimabile per assicurarsi che tutte le attuali query SQL stiano lavorando nel modo più efficiente possibile.

Molti strumenti che assistono nell’ottimizzazione delle query in SQL Server sono dotati di sistemi di allerta e notifica personalizzabili per identificare automaticamente e rimediare alle query che funzionano male. Poiché questo rimuove la necessità di un amministratore di database per approvare o implementare le modifiche suggerite, gli strumenti di tuning di SQL Server possono ridurre il tempo di risposta quando si risolvono i problemi del server quando si presentano. Gestendo e monitorando proattivamente le query SQL, gli amministratori di database possono garantire che le query SQL continuino a funzionare in modo efficiente in futuro, mentre potenzialmente possono evitare problemi prima che accadano.

Back top top

I migliori strumenti di ottimizzazione delle prestazioni delle query SQL

Anche se è sicuramente utile conoscere alcuni dei dettagli di come sintonizzare manualmente le query SQL, parte del fascino degli strumenti di ottimizzazione delle query SQL è la loro capacità di semplificare il processo di sintonizzazione e possono anche offrire consigli su clausole e dichiarazioni dove l’efficienza può essere migliorata. Ecco tre dei miei preferiti da controllare.

SolarWinds Database Performance Analyzer

Questa applicazione di ottimizzazione delle prestazioni delle query SQL è progettata sia per il monitoraggio delle prestazioni che per l’ottimizzazione delle query. Preferisco Database Performance Analyzer per molte delle stesse ragioni per cui mi piacciono altri programmi SolarWinds, in particolare perché è ricco di diverse caratteristiche personalizzabili, tra cui dashboard intuitivi che consentono di monitorare facilmente le prestazioni delle query SQL e delle macchine client e di rilevare rapidamente i modelli nel tempo con metriche codificate a colori.

Database Performance Analyzer SolarWinds

Database Performance Analyzer fornisce un monitoraggio 24 ore su 24 per i database e utilizza protocolli di rilevamento basati sulle anomalie per identificare le query non performanti. L’interfaccia utente accessibile fornisce sia una visione d’insieme sulle prestazioni olistiche della rete che dettagli granulari come i Top Waits per SQL, che permettono agli amministratori di identificare rapidamente le query che hanno più bisogno di attenzione.

Database Performance Analyzer crea un record storico delle prestazioni, sintetizzando i dati quasi in tempo reale con metriche storiche e attuali per creare grafici a barre che, quando accoppiati con avvisi e notifiche personalizzabili, possono tenere rapidamente informati gli amministratori dei potenziali problemi. I consulenti di tuning offrono anche suggerimenti sulle query che necessitano di attenzione immediata.

Tutto sommato, è un’opzione eccellente e completa pienamente compatibile con altri prodotti SolarWinds. Se state cercando di provare prima di comprare, vi incoraggio a controllare il loro prodotto di prova gratuito per 14 giorni.

Back top top

SentryOne SQL Sentry

SentryOne

Questa applicazione per l’ottimizzazione delle prestazioni delle query SQL e la gestione dei database può essere utilizzata anche per l’ottimizzazione delle query SQL. SentryOne permette agli amministratori di database di stabilire protocolli di benchmark delle prestazioni da applicare ai server e ai database SQL per individuare i colli di bottiglia delle risorse e le query SQL non performanti.

SentryOne presenta una funzionalità di rilevamento dei blocchi che visualizza i processi bloccanti in un’interfaccia grafica simile a SolarWinds Database Performance Analyzer. SentryOne rintraccia anche i processi che causano deadlock e fornisce consigli su quali cambiamenti implementare quando si mettono a punto le query.

SentryOne automatizza anche gran parte del processo di monitoraggio e include più di 100 condizioni di allarme incorporate per mantenere gli amministratori di database informati dei problemi di performance quando si verificano. SentryOne può anche essere personalizzato per rispondere automaticamente quando una delle condizioni di soglia è stata soddisfatta. Automatizzando la maggior parte dell’ottimizzazione e della gestione delle query SQL, il sistema di allerta di SentryOne libera gli amministratori per compiti più urgenti.

Paessler PRTG Network Monitor

Paessler PRTG Network Monitor Un altro forte concorrente per la regolazione delle prestazioni delle query SQL è PRTG Network Monitor di Paessler. Questo strumento di monitoraggio di rete può essere utilizzato per tracciare le metriche delle prestazioni per diverse varietà di database SQL – tra cui Microsoft SQL Server, MySQL, Oracle SQL e PostgreSQL – cosa che fa attraverso sensori di database individuali. I sensori sono configurati rapidamente durante l’avvio e non richiedono ulteriore manutenzione una volta attivi.

Per l’ottimizzazione delle query SQL in SQL Server, PRTG Network Monitor traccia le query SQL in ogni fase della richiesta e visualizza i tempi di esecuzione in un’interfaccia dashboard per una rapida valutazione dei problemi di prestazioni. Le ampie capacità di monitoraggio della rete dell’applicazione forniscono anche visibilità su problemi di rete più ampi che potenzialmente influenzano le prestazioni dei vostri server e database. L’ampiezza delle informazioni che lo strumento traccia rende un’esperienza semplificata di tuning delle prestazioni delle query SQL.

Come le altre due opzioni qui, PRTG Network Monitor dispone di un sistema di avvisi che lavora per mantenere tutti gli attori chiave informati in caso di potenziali problemi di prestazioni. Gli avvisi possono anche essere personalizzati, ma PRTG Network Monitor include una funzionalità API aggiunta che permette agli amministratori di scrivere script di notifica su misura proprio per le specifiche delle loro reti, server e database.

Categorie: Articles

0 commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *