Performance-Tuning

Governo delle istanze\database SQL Server!

Introduzione

L’obiettivo del presente articolo è quello di esporre una nuova metodologia di monitoraggio che ha lo scopo di governare le istanze SQL Server e d’integrare gli strumenti di monitoraggio.

Governare l’istanza SQL Server

Una delle cose necessarie per governare un’istanza e\o dei database SQL Azure, è quella di essere in grado di sapere quali sono i comandi che girano abitualmente sull’istanza e saper di rispondere ai molti quesiti che emergono ogni giorno in fase di amministrazione: problemi di lentezze applicative che vanno declinati nel comprendere se la componente database è la parte lenta o meno nonché se la causa sono stati i blocchi o il carico di quali comandi; stored procedure che degradano di performance nel tempo per le quali capire quale è lo statement lento e da quando ha iniziato a degradare; esigenze di deploy di nuovi database e scelta dell’istanza; richieste di lavoro in fasce orarie non abituali; comandi che ingrandiscono il TLOG e molte altre richieste.

Modalità di elaborazione query e indici columnstore

In questo articolo verranno trattati i due metodi di elaborazione delle query conosciuti come Row mode execution e Batch mode execution per SQL Server 2019. Verrà inoltre descritto un meccanismo per attivare Batch mode execution su SQL Server 2017 anche quando non si possono creare indici columnstore “effettivi”.

Row mode execution

Row mode execution è un metodo di elaborazione delle query utilizzato con le tabelle tradizionali disk-based, in cui i dati vengono archiviati in formato riga. Le tabelle che utilizzano questo tradizionale formato di archiviazione vengono anche dette “rowstore table”. Quando una query viene eseguita e accede ai dati archiviati in formato riga, gli operatori previsti nel piano di esecuzione leggono ogni riga richiesta dalla query. Da ogni riga letta, SQL Server recupera quindi le colonne necessarie, specificate nell’istruzione SELECT, in un predicato di JOIN, in un predicato di filtro, ecc..

Predicati sargable e valori NULL

Sergio Govoni

In questo articolo parleremo del concetto noto con il nome di SARGability arricchendolo di alcune considerazioni sulla trattazione dei valori NULL su cui ho avuto modo di ragionare dopo aver partecipato ad una sessione di Itzik Ben-Gan e dalla quale ho tratto ispirazione.

Wikipedia definisce Sargable una condizione (o predicato) di una query se l’engine del DBMS può sfruttare un indice per accelerare l’esecuzione della query. Il termine Sargable deriva dalla contrazione di Search ARGument ABLE.

Statistiche di utilizzo e performance delle viste in un database SQL Server

Sergio Govoni

Le performance di una soluzione database sono spesso oggetto di diatriba tra chi fornisce la soluzione e chi la personalizza. Scrivere codice T-SQL ottimizzato, in grado di scalare all’aumentare dei dati e degli utenti, non è affatto semplice e quando la complessità aumenta, le attività di manutenzione del codice diventano difficili da attuare anche per l’autore stesso.

In questo articolo, condivido la metodologia di tuning e alcuni script che utilizzo per ottenere informazioni sulle performance delle query che utilizzano le viste presenti nel database oggetto dell’analisi. La presenza di viste nidificate contenenti query non ottimizzate può diventare oggetto di analisi specifica, gli script contenuti in questo articolo hanno l’obiettivo di fornire alcuni indicatori sull’utilizzo e sulle performance delle viste di un DB.

Missing Index... Cache

Qualche settimana fa un collega mi ha sottoposto un quesito la cui risposta coinvolge alcuni concetti molto interessanti. La domanda più o meno era:

SQL Server mi dice che manca un indice, l’ho creato. Perchè eseguendo una query su sys.dm_db_missing_index_details trovo ancora l’indice come mancante? Come dico a SQL di aggiornare la DMV?

La risposta alla domanda è abbastanza semplice: una DMV non può essere aggiornata dall’utente. Unica componente con diritti di “scrittura” di questa particolare DMV è il Query Optimizer, che però va ad “aggiungere” informazioni. Se invece si vuole “svuotare” il contenuto della DMV.. beh.. non ci sono santi: serve riavviare l’istanza del server (come peraltro chiaramente riportato nella documentazione online)

PASSGIVC - SQL Server IaaS performance tuning

Sergio Govoni

Il prossimo webinar del PASS Italian Virtual Chapter è programmato per mercoledì 12 Luglio 2017 alle 18:00.

Marco Obinu (@OmegaMadLab) ci spiegherà come massimizzare le performance di una VM e dell’istanza SQL Server ospitata a bordo, nella sessione dal titolo “SQL Server IaaS performance tuning”.

Questo è l’abstract del webinar:

Poter generare in pochi click una virtual machine con a bordo un’istanza di SQL Server è sicuramente una cosa notevole, ma la necessità di rendere semplice ed universale il deployment di queste macchine può non far loro esprimere tutto il potenziale di cui sono capaci. Vediamo insieme come massimizzare le performance della VM e dell’istanza, andando a spiegare ed applicare quelle che sono le best practices Microsoft sull’argomento.

Uso "nascosto" del tempdb

Qualche settimana fa, mentre ero al lavoro, mi sono ritrovato a dover risolvere un problema apparentemente non molto strano, ma che tuttavia nasconde qualche retroscena interessante. I fatti sono stati più o meno questi:

Circa a metà mattinata mi è stato segnalato un problema di prestazioni su uno dei sistemi che abbiamo in gestione nel nostro team di lavoro; dopo alcuni semplici controlli è stato subito chiaro che il rallentamento era sostanzialmente dovuto ad un problema di contency sul tempdb. “Beh.. abbastanza semplice!” - ho subito pensato! - “la colpa è mia perché (ahi ahi ahi) non ho ancora fatto lo split del file dati sul tempdb!”.

SQL Sentry Plan Explorer: Una sola release per tutti, gratuita!

Chi si occupa di ottimizzare le performance delle query in SQL Server ha sicuramente avuto modo di apprezzare i tool della famiglia “Plan Explorer”, prodotti da SQL Sentry e rivolti sia agli sviluppatori che ai DBA per effettuare analisi approfondite sui piani di esecuzione in SQL Server.

Fino a qualche giorno fa, i tool della famiglia Plan Explorer erano suddivisi in:

  • Plan Explorer (versione gratuita)
  • Plan Explorer PRO (versione a pagamento)
  • Plan Explorer ULTIMATE (con le funzionalità della versione PRO arricchite di due nuove feature: Index Analysis e Performance Profiling, a pagamento)

Greg Gonzalez (@SQLsensei), CEO di SQL Sentry, invece di aumentare le feature a pagamento ha deciso di fondere i tre prodotti in un unico strumento, con tutte le funzionalità, gratuito per tutti gli utenti!

SQL Tuning Saturday 2016

SQL Tuning Saturday 2016 419x210

Vi è mai successo di ricevere segnalazioni circa la lentezza della vostra soluzione database o dell’applicazione che avete in manutenzione? Vi è mai successo di avere il sito web aziendale talmente lento da essere inutilizzabile? Cosa sta succedendo all’istanza SQL Server?

Se vi siete posti queste domande almeno una volta o se avere il timore di dover affrontare, prima o poi, problemi di performance, l’evento SQL Tuning Saturday 2016 è quello che fa per voi, una giornata interamente dedicata al “Performance Tuning” su SQL Server.

La serie di eBook gratuiti "SQL Server and .NET Blog"

Sergio Govoni

La serie di eBook gratuiti “The SQL Server and .NET Blog eBook Series” di Artemakis Artemiou (@artemakis) raccoglie decine di articoli che spiegano come risolvere problemi pratici nello sviluppo di un database o come eseguire alcune attività molto comuni nella gestione di un’istanza SQL Server.

Dallo Sviluppo all’Amministrazione, al Tuning delle Performance; questi tre eBook non possono mancare nella vostra libreria digitale:

Buona lettura!