Gli amministratori di database indossano molti cappelli dietro le quinte, dalla pianificazione della capacità alla sicurezza fino al ripristino dei dati. Forse la più visibile delle responsabilità del DBA è il monitoraggio delle prestazioni di SQL Server. Sebbene le attività quotidiane associate al mantenimento di un sistema ad alte prestazioni possano passare inosservate al mondo esterno, è meglio credere che le persone inizieranno a prestare attenzione quando le prestazioni non sono ideali.
Interruzioni del database, tempi di risposta lenti e altri problemi relativi agli utenti sono dannosi per le aziende. Inoltre, poiché le prestazioni di SQL Server (o la loro mancanza) rientrano esattamente nel dominio DBA, i database con prestazioni scadenti sono dannosi per la sicurezza del tuo lavoro.
Minaccia di disoccupazione a parte, garantire le massime prestazioni di SQL Server è fondamentale per la capacità della tua organizzazione di funzionare senza problemi, quindi abbiamo compilato cinque trucchi che i DBA devono conoscere per ottimizzare le prestazioni di SQL Server.
Automatizzazione delle attività di routine e della manutenzione
Al giorno d'oggi, ci sono poche ragioni per cui un DBA esegua manualmente molte attività quotidiane e controlli di manutenzione. Gli odierni strumenti di monitoraggio delle prestazioni di SQL Server possono monitorare automaticamente lo spazio su disco, ispezionare i log degli errori e verificare i backup. Puoi persino impostare avvisi di sistema che non solo ti informano che c'è un problema, ma forniscono anche informazioni sulla gravità e sul tipo di problema.
Uno dei principali vantaggi di questi strumenti di monitoraggio è che molte delle funzioni di monitoraggio delle prestazioni sono accessibili tramite il tuo dispositivo mobile, rendendo la risoluzione dei problemi molto più flessibile. Puoi monitorare e valutare il tuo sistema praticamente ovunque e in qualsiasi momento.
Traccia le metriche delle prestazioni
Ovviamente è importante per gli strumenti di monitoraggio delle prestazioni di SQL Server rilevare e risolvere i problemi attuali, ma è anche molto importante tenere traccia delle prestazioni passate. Il monitoraggio e l'analisi delle prestazioni del database nel tempo consentono di identificare le tendenze e anticipare i problemi di prestazioni futuri. Il monitoraggio della cronologia delle prestazioni fornisce dati sul fatto che le prestazioni siano migliori o peggiori in un determinato periodo di tempo.
L'analisi del carico di lavoro è un altro modo per ottenere metriche delle prestazioni che consentono di migliorare le prestazioni di SQL Server. Eseguire un'analisi per identificare l'impatto di un utente, database, host o istruzione SQL sul carico di lavoro. Se si isola una fonte che ha un impatto negativo sul sistema, diventa molto più semplice adottare le misure appropriate per risolvere il problema.
Identifica la causa principale dei colli di bottiglia
Come affermato in precedenza, una volta che si isola la fonte di un collo di bottiglia o di un killer delle prestazioni, è molto più facile correggere il problema. Alcune fonti comuni di colli di bottiglia e sintomi a cui prestare attenzione includono:
- Problemi con la CPU:SQL Server sta monopolizzando il processore
- Problemi di memoria:tempi di esecuzione più lunghi delle query
- Problemi di archiviazione:attività estrema sui dischi e lunghi tempi di attesa per I/O
- Problemi di I/O:il tempo di attesa di WRITELOG è elevato rispetto al tempo di attesa totale
Una volta identificato il collo di bottiglia, puoi provare alcune soluzioni che spesso si occupano di problemi di prestazioni comuni, tra cui:
- Ottimizzazione di SQL Server:isola la query specifica che è stata ritardata, il tempo di attesa specifico che ha causato il ritardo e l'impatto sul tempo del collo di bottiglia
- Elimina gli indici obsoleti e duplicati:velocizza le query perché l'ottimizzatore non ha bisogno di considerare più indici durante l'analisi delle prestazioni delle query e la determinazione di un piano.
- Correzione della frammentazione:la ricostruzione o la deframmentazione periodica degli indici migliorerà le prestazioni riducendo il numero di pagine di dati sparse o parzialmente riempite che SQL Server deve leggere.
Esegui controlli di integrità delle prestazioni di routine
Prevenire è quasi sempre meglio che curare. Utilizzare i controlli dello stato per identificare i problemi effettivi e potenziali all'interno del sistema. I controlli di integrità ti aiuteranno a individuare i problemi di sicurezza, ripristino di emergenza, memoria, I/O e configurazione prima che causino gravi problemi di prestazioni.
I controlli sanitari regolari dovrebbero includere:
- Controllo degli indici mancanti:gli indici mancanti rallentano la risposta di SQL Server perché deve cercare dati in ogni record. Ma non essere troppo veloce per aggiungere solo gli indici mancanti; anche l'aggiunta di indici non necessari può influire negativamente sulle prestazioni.
- Ricerca di livelli sproporzionati di query ad hoc:l'uso occasionale di query ad hoc non è un problema. Ma quando vengono usati troppo frequentemente, le prestazioni ne risentono. SQL Server non riutilizza queste istruzioni, quindi la cache delle procedure si gonfia, causando lo svuotamento dei dati della cache del buffer. SQL Server deve quindi leggere i dati dal disco (lento) anziché dalla memoria.
- Ricerca di statistiche non aggiornate:Query Optimizer di SQL Server utilizza le statistiche per calcolare il costo stimato delle operazioni. Statistiche non aggiornate possono far sì che Query Optimizer selezioni un piano di esecuzione non ottimale.
Aggiorna all'ultima versione di SQL Server
Questo sembra ovvio, ma se non lo hai già fatto, esegui l'aggiornamento all'ultima versione di SQL Server. SQL Server 2000, 2005 e 2008 non sono più in fase di sviluppo attivo e le versioni più recenti hanno molte funzionalità che aumenteranno sicuramente le prestazioni. Queste funzionalità includono l'ultima versione di Query Optimizer di SQL Server, nuovi set di istruzioni per la CPU e, naturalmente, correzioni di bug.