La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

#sqlsatTorino #sqlsat400 May 23, 2015 Analisi prestazionale (Performance Tuning) in Microsoft SQL Server tramite Dynamic Management Objects Gilberto Zampatti.

Presentazioni simili


Presentazione sul tema: "#sqlsatTorino #sqlsat400 May 23, 2015 Analisi prestazionale (Performance Tuning) in Microsoft SQL Server tramite Dynamic Management Objects Gilberto Zampatti."— Transcript della presentazione:

1 #sqlsatTorino #sqlsat400 May 23, 2015 Analisi prestazionale (Performance Tuning) in Microsoft SQL Server tramite Dynamic Management Objects Gilberto Zampatti gilberto.zampatti@nuovisoci.it

2 #sqlsatTorino #sqlsat400 May 23, 2015 Sponsors

3 #sqlsatTorino #sqlsat400 May 23, 2015 Organizers

4 #sqlsatTorino #sqlsat400 May 23, 2015 Speaker info  IT pro  IT pro da …un bel mucchietto di anni ;)  MCT  MCT: un pò meno di metà del tempo in aule di varia misura e capienza  Mentore/Consulente  Mentore/Consulente: mi si contatta quando le cose vanno …ma si vuol che vadano meglio  Speaker  Speaker: tra i fondatori di UGISS, qualche conferenza ogni anno mi tiene in salute

5 #sqlsatTorino #sqlsat400 May 23, 2015 Agenda  System views / System Functions  Dynamic Management Objects  Approccio all’ Analisi prestazionale

6 #sqlsatTorino #sqlsat400 May 23, 2015 In principio…  Ruolo originale del master  i metadati erano persistiti in tabelle (system tables) esposte ed accessibili  ISV e SW-houses ne facevano uso direttamente  Ogni fix o Service pack comportava il rischio di una modifica al modello dei dati

7 #sqlsatTorino #sqlsat400 May 23, 2015 Ci voleva prudenza…  SQL 2005 cambia le carte in tavola:  Le system tables sono trasferite in un nuovo database (mssqlsystemresource)  Il master si limita a far da tramite esponendo una collezione di viste (compatibility views)  A complemento, sono disponibili anche nuove viste (catalog views)…  … e sono introdotti per la prima volta nuovi oggetti

8 #sqlsatTorino #sqlsat400 May 23, 2015 Dynamic Management Objects  La denominazione implica dinamicità dei valori esposti  Dynamic Management Views (DMVs)  Dynamic Management Functions (DMFs)  Mondo in costante evoluzione:  SQL 2005 ne espone 89  SQL 2008 ne espone 136  SQL 2012 ne espone 179  SQL 2014 ne espone 200

9 #sqlsatTorino #sqlsat400 May 23, 2015 Panoramica  DMV e DMF espongono informazioni e contatori su un ampio ventaglio di oggetti e funzionalità:  Informazioni sulle esecuzioni  Informazioni sulle transazioni  Informazioni sugli Indici  Informazioni sui databases e sul rispettivo I/O  Informazioni sul resto di SQL OS

10 #sqlsatTorino #sqlsat400 May 23, 2015 Sicurezza  L’accesso ai DMO è protetto:  I DMO che espongono oggetti dell’istanza (in senso lato) sono accessibili da accounts che disponono del privilegio VIEW SERVER STATE  I DMO che espongono invece informazioni su oggetti di uno o più Databases sono accessibili da account dotati di privilegio VIEW DATABASE STATE

11 #sqlsatTorino #sqlsat400 May 23, 2015 Ambiti delle informazioni  I DMO espongono valori che:  Sono uno snapshot del momento dell’esecuzione  Sono azzerati allo startup dei servizi e cumulativi fino allo shutdown  Quasi sempre si rendono necessarie almeno due letture a distanza di tempo per derivare per ciascun valore un delta rappresentativo dell’intervallo “misurato”

12 #sqlsatTorino #sqlsat400 May 23, 2015 Un buon punto di partenza  Migliorare le prestazioni significa…far attendere di meno l’Utente  …ma PERCHE l’Utente attende?  Eccessivo consumo di risorse (CPU, Memoria, Storage, Network…)  Sys.dm_os_wait_stats fornisce I tempi cumulativi che ciascun “motivo” (Type) ha accumulato dal momento dello start del Servizio( https://msdn.microsoft.com/en-us/library/ms179984.aspx ) https://msdn.microsoft.com/en-us/library/ms179984.aspx  In sql server 2012 ne sono classificati 654…  Solo alcuni hanno un significato “negativo” e ci danno un primo indirizzo. MOLTO SOMMARIO (e talvolta ambiguo)

13 #sqlsatTorino #sqlsat400 May 23, 2015 Connessioni, Sessioni, Richieste (1)  Connessioni (Connections)  Un’Applicazione, per poter operare su un database deve CONNETTERSI all’istanza.  Sys.dm_exec_connections fornisce informazioni sul traffico di rete, sul protocollo utilizzato, e sugli attributi della fonte della chiamata. ( https://msdn.microsoft.com/en-us/library/ms181509.aspx ) https://msdn.microsoft.com/en-us/library/ms181509.aspx  Sessioni (Sessions)  Una connessione consente ad applicazioni ed utenti di iniziare e condurre una o più sessioni.  sys.dm_exec_sessions restituisce informazioni su ciascuna sessione applicativa o di Sistema: impostazioni, sicurezza, contatori (uso di CPU, Memoria, I/O, ecc.) ( https://msdn.microsoft.com/en-us/library/ms176013.aspx )https://msdn.microsoft.com/en-us/library/ms176013.aspx

14 #sqlsatTorino #sqlsat400 May 23, 2015 Connessioni, Sessioni, Richieste (2)  Richieste (Requests)  Scopo naturale della sessione è quello di richiedere a SQL server di svolgere attività (QUERIES)  Sys.dm_exec_requests mette a disposizione un’ampia gamma di informazioni e di statistiche sulle queries eseguite (elapsed time, CPU time, Waits, ecc) ( https://msdn.microsoft.com/en-us/library/ms177648.aspx ) https://msdn.microsoft.com/en-us/library/ms177648.aspx  Sys.dm_exec_sql_text restituisce il testo del batch la cui esecuzione è descritta ed individuate dalla richiesta (tramite sql_handle) ( https://msdn.microsoft.com/en-us/library/ms181929.aspx )https://msdn.microsoft.com/en-us/library/ms181929.aspx  Sys_dm_exec_query_plan rende il piano di esecuzione di quanto eseguito dalla richiesta (tramite plan_handle) ( https://msdn.microsoft.com/en-us/library/ms189747.aspx ) https://msdn.microsoft.com/en-us/library/ms189747.aspx

15 #sqlsatTorino #sqlsat400 May 23, 2015 DEMO

16 #sqlsatTorino #sqlsat400 May 23, 2015 Queries e Piani di esecuzione (1)  Quali sono le queries più costose ?  Quelle che durano di più  Quelle che, pur con relativa “efficienza”, sono eseguite molte volte  Quali stored procedures ?  I piani di esecuzione sono riutilizzati?  Quali e quante queries “ad hoc” impegnano la plan cache?

17 #sqlsatTorino #sqlsat400 May 23, 2015 Queries e Piani di esecuzione (2)  sys.dm_exec_query_stats restituisce statistiche prestazionali su ciascun piano presente in cache ( https://msdn.microsoft.com/en-us/library/ms189741.aspx ) https://msdn.microsoft.com/en-us/library/ms189741.aspx  sys.dm_exec_procedure_stats restituisce statistiche prestazionali su ciascuna stored procedure ( https://msdn.microsoft.com/en-us/library/cc280701.aspx ) https://msdn.microsoft.com/en-us/library/cc280701.aspx  sys.dm_exec_cached_plans informazioni dettagliate sui piani di esecuzione cached ( https://msdn.microsoft.com/en-us/library/ms187404.aspx ) https://msdn.microsoft.com/en-us/library/ms187404.aspx  sys.dm_exec_query_optimizer_info restituisce informazioni relative all’operatività dell’ottimizzatore ( https://msdn.microsoft.com/en-us/library/ms175002.aspx ) https://msdn.microsoft.com/en-us/library/ms175002.aspx

18 #sqlsatTorino #sqlsat400 May 23, 2015 Queries e Piani di esecuzione (3)  sys.dm_exec_query_plan restituisce il piano di esecuzione in formato XML ( https://msdn.microsoft.com/en-us/library/ms189747.aspx ) https://msdn.microsoft.com/en-us/library/ms189747.aspx  sys.dm_exec_text_query_plan restituisce il piano di esecuzione in formato testo ( https://msdn.microsoft.com/en-us/library/bb326654.aspx ) https://msdn.microsoft.com/en-us/library/bb326654.aspx  sys.dm_exec_plan_attributes informazioni dettagliate sui piani di esecuzione (una riga per attributo) ( https://msdn.microsoft.com/en-us/library/ms189472.aspx )https://msdn.microsoft.com/en-us/library/ms189472.aspx

19 #sqlsatTorino #sqlsat400 May 23, 2015 Transazioni (1)  A transaction is a sequence of operations performed as a single logical unit of work. A logical unit of work; must exhibit four properties, called the ACID properties, to qualify as a transaction.  Atomic  Consistent  Isolated  Durable

20 #sqlsatTorino #sqlsat400 May 23, 2015 Transazioni (2)  sys.dm_tran_active_transactions offre un primo insieme di informazioni su ciascuna Transazione attualmente in essere  Begin time  Tipo (Read/write, Read Only, System, DTC)  Stato (inizializzata, attiva, completata, in attesa, committed, rollbacked…ecc) ( https://msdn.microsoft.com/en-us/library/ms174302.aspx )https://msdn.microsoft.com/en-us/library/ms174302.aspx

21 #sqlsatTorino #sqlsat400 May 23, 2015 Transazioni (3)  Due approcci alla concorrenza  Ottimistico (basato su versioning)  Pessimistico  Diversi tipi di lock  Diversi livelli di isolamento  Locking & blocking condizionano le prestazioni  Sys.dm_tran_locks restituisce informazioni su lock in essere (resource) e in attesa (requests) (https://msdn.microsoft.com/en-us/library/ms190345.aspx )https://msdn.microsoft.com/en-us/library/ms190345.aspx  Sys.dm_os_waiting_tasks offer informazioni sui task in attesa di disponibilità di risorse (inclusa la nozione del o dei task “bloccanti”) ( https://msdn.microsoft.com/en-us/library/ms188743.aspx )https://msdn.microsoft.com/en-us/library/ms188743.aspx

22 #sqlsatTorino #sqlsat400 May 23, 2015 INDICI (1)  Criticità del modello dei dati  Ci sono indici inutilizzati? ( sys.dm_db_index_usage_stats )  Come sono utilizzati I nostri indici? ( sys.dm_db_index_operational_stats )  È possibile che …manchino indici che potrebbero interessare ( sys.dm_db_missing_index_group_stats, sys.dm_db_missing_index_groups, sys.dm_db_missing_idex_details, sys.dm_db_missing_index_columns ) Index related DMO: ( https://msdn.microsoft.com/en-us/library/ms187974.aspx )https://msdn.microsoft.com/en-us/library/ms187974.aspx

23 #sqlsatTorino #sqlsat400 May 23, 2015 INDICI (2)  L’indice è un oggetto dinamico  Soffre ineludibilmente di una malattia cronica:  Frammentazione  Sys.dm_db_index_physical_stats  ALTER INDEX…REBUILD  ALTER INDEX…REORGANIZE  OK: ma quando serve deframmentare?

24 #sqlsatTorino #sqlsat400 May 23, 2015 INDICI (3)  Non dimentichiamo che:  CLUSTERED INDEX è sfruttato al meglio quando si inseriscono righe nell’ordine della chiave e quando deve essere PARZIALMENTE scandito  NON CLUSTERED INDEX è l’ideale quando la selettività della chiave è elevate e serve un accesso per chiave (seek)

25 #sqlsatTorino #sqlsat400 May 23, 2015 DEMO

26 #sqlsatTorino #sqlsat400 May 23, 2015 Q&A  Questions?

27 #sqlsatTorino #sqlsat400 May 23, 2015 THANKS! SPEAKERSCORE http://speakerscore.com/MK1T #sqlsatTorino #sqlsat400


Scaricare ppt "#sqlsatTorino #sqlsat400 May 23, 2015 Analisi prestazionale (Performance Tuning) in Microsoft SQL Server tramite Dynamic Management Objects Gilberto Zampatti."

Presentazioni simili


Annunci Google