Tutti gli articoli di Sergio Govoni

SQL Server Cumulative Updates (Gennaio 2017)

Facebooktwittergoogle_plusredditlinkedin

Nel mese di Gennaio sono stati rilasciati i seguenti Cumulative Update per SQL Server:

Cumulative Update 3 per SQL Server 2017 RTM

Cumulative Update 7 per SQL Server 2016 SP1

Cumulative Update 10 per SQL Server 2014 SP2

SQL Saturday Pordenone 2018 – Agenda online!

Facebooktwittergoogle_plusredditlinkedin

L’agenda del SQL Saturday Pordenone, edizione 2018, è online!

L’evento si terrà sabato 17 Febbraio 2018 presso il Consorzio Universitario di Pordenone, via Prasecco, 3/a.

Anche quest’anno avremo 4 track che erogheranno sessioni in parallelo per un totale di 24 ore di formazione gratuita su SQL Server, Data Science, Analytics e Cloud Application! Potrete quindi seguire le sessioni che trattano funzionalità e tecnologie che utilizzate ogni giorno piuttosto che quelle che desiderate approfondire scegliendole tra:

  • Advanced Analysis Techniques
  • Analytics and Visualization
  • Cloud
  • Data Science
  • Database Administration
  • Development

Date un’occhiata allo schedule, lo troverete molto interessante!

Per la registrazione, puntate il vostro browser qui, l’hashtag twitter ufficiale è #sqlsat707.

Fin da ora, ringraziamo gli Sponsor, il loro contributo rende possibile l’organizzazione di eventi come questo: Grazie!

Non mancate! Ci vediamo a Pordenone!

SQL Saturday Parma 2017 – Sessioni registrate

Facebooktwittergoogle_plusredditlinkedin

Le sessioni tenute al SQL Saturday Parma 2017 sono state registrate!

I video sono disponibili sul canale UGISS di Vimeo nella raccolta SQL Saturday Parma 2017, di seguito i link dei singoli video suddividi per track, per un totale di 12 ore di formazione gratuita distribuite sull’intera Data Platform di Microsoft!

DBA

DEV

Data Science-Analytics

Cloud

 

Il materiale (slide e script demo) utilizzato durante le sessioni è disponibile per il download accedendo allo schedule dell’evento.

Il post produzione dei video è stato curato con professionalità da Davide Zampatti e Riccardo Molti di After Spell Studios.

L’occasione si presta per augurare a tutti Buone Feste!

PASSGIVC – Introduzione a SQL Server su Linux

Facebooktwittergoogle_plusredditlinkedin

Il prossimo webinar del PASS Italian Virtual Chapter è programmato per mercoledì 20 dicembre 2017 alle ore 18:00.

Danilo Dominici (@danilo_dominici) ci spiegherà come utilizzare SQL Server su Linux nella sessione dal titolo “Introduzione a SQL Server su Linux”.

Questo è l’abstract del webinar:

Da sempre i DBA SQL Server hanno utilizzato Windows come sistema operativo ed interfaccia utente. Con il rilascio di SQL Server su Linux lo scenario cambia, ancora una volta, per consentire una ancor maggiore diffusione di SQL Server anche laddove finora non era stato preso in considerazione. In questa sessione vediamo le caratteristiche di SQL Server su Linux e quali sono le modalità per interagire con esso da Linux e da Windows.

Per effettuare la registrazione, puntate il vostro browser qui.

SQL Saturday Catania 2018 – Save the date!

Facebooktwittergoogle_plusredditlinkedin

Come preannunciato in questo articolo, l’anno prossimo, l’evento SQL Saturday farà tappa a Catania, sarà l’edizione #728. Ospitato nella sede di Free Mind Foundry, sarà gratuito (con registrazione obbligatoria) e si terrà il 19 Maggio 2018.

L’agenda verrà finalizzata dopo la chiusura della call for speakers, nel frattempo, potete consultare le proposte inviate qui.. se volete inviare le vostre proposte accedete all’area speaker con questo link.

Per effettuare la registrazione all’evento, puntate il vostro browser qui.

Usate l’hashtag twitter #sqlsat728 per farci sapere che parteciperete all’evento, rimanete sintonizzati, seguiranno ulteriori dettagli!

Non mancate, in Maggio la Sicilia è bellissima!!

Conversioni implicite: La plan cache ci svela quante sono e dove avvengono!

Facebooktwittergoogle_plusredditlinkedin

Nell’articolo Conversioni implicite: cosa sono e che impatto hanno sulle nostre query, Luca Bruni (@mrg3d) ci ha parlato delle conversioni implicite che avvengono, a nostra insaputa, all’interno dell’Engine di SQL Server. Tali conversioni, possono costringere il Query Optimizer ad accedere alle tabelle con operazioni di scansione (Table Scan, Index Scan) in alternativa alle più efficienti operazioni di Seek (Index Seek), e quando una parte significativa del carico di lavoro è interessata da conversioni implicite, le performance degradano visibilmente!

Una conversione implicita tra due tipi di dato differenti avviene sempre dal tipo di dato meno preciso al tipo di dato più preciso. Per ovvie ragioni, SQL Server non può perdere precisione nei dati a causa di una conversione implicita, parlando quindi di tipi di dato testo, una conversione implicita potrà avvenire, ad esempio, dal tipo VARCHAR (meno preciso) al tipo NVARCHAR (più preciso), mai nella direzione opposta.

Probabilmente vi starete chiedendo se il vostro carico di lavoro è affetto da conversioni implicite e in che percentuale.

Le conversioni implicite, all’interno del piano di esecuzione, vengono segnalate con un warning. Il Query Optimizer può segnalare i seguenti tipi di warning:

  • No statistics (ColumnsWithNoStatistics)
  • No join predicate (NoJoinPredicate)
  • Implicit conversions (PlanAffectingConvert)
  • Sort on tempdb (SpillToTempDb)
  • No matched indexes (UnmatchedIndexes)
  • Wait (WaitWarningType)

..tra cui troviamo l’Implicit Conversions Warning (PlanAffectingConvert) di cui parleremo in questo articolo.

Il warning PlanAffectingConvert viene segnalato proprio in presenza di conversioni implicite, quando viene utilizzata la funzione CONVERT_IMPLICIT. È quindi possibile fare indagini sulla presenza di conversioni implicite nel carico di lavoro analizzando la plan cache, ovvero l’area di memoria utilizzata da SQL Server per memorizzare i piani di esecuzione delle query.

Utilizzando la metodologia “top-down” per analizzare il problema, il primo dato che vorremmo avere è la percentuale dei piani di esecuzione in cache affetti da conversioni implicite. Per ottenerlo dovremo contare i piani di esecuzione in cache, e di questi, quelli affetti da conversioni implicite… la seguente CTE estrae le informazioni che cerchiamo: il numero dei piani di esecuzione in cache, il numero dei piani di esecuzione in cui viene utilizzata la funzione CONVERT_IMPLICIT ed il calcolo della percentuale.

WITH XMLNAMESPACES
(
 DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'
),
Cached_Plans AS
(
 SELECT
 COUNT(cp.plan_handle) AS Total_Plan_Cached
 FROM
 sys.dm_exec_cached_plans AS cp
),
Cached_Plans_with_Convert AS
(
 SELECT
 COUNT(cp.plan_handle) AS Total_Plan_Cached_with_Convert
 FROM
 sys.dm_exec_cached_plans AS cp
 CROSS APPLY
 sys.dm_exec_query_plan(cp.plan_handle) AS qp
 CROSS APPLY
 sys.dm_exec_sql_text(cp.plan_handle) AS qt
 WHERE
 (qp.query_plan.exist('//Warnings') = 1)
 AND CAST(qp.query_plan.query('//Warnings') AS VARCHAR(MAX)) LIKE '%CONVERT_IMPLICIT%'
)
SELECT
 Total_Plan_Cached
 ,Total_Plan_Cached_with_Convert = (SELECT Total_Plan_Cached_with_Convert FROM Cached_Plans_with_Convert)
 ,CAST(CAST((SELECT Total_Plan_Cached_with_Convert FROM Cached_Plans_with_Convert) AS DECIMAL(10,3)) / 
 CAST(Total_Plan_Cached AS DECIMAL(10,3)) AS DECIMAL(6,3)) * 100 [% Plan_Cached_with_Convert]
FROM
 Cached_Plans;

L’output di esempio è illustrato nelle figura seguente, dove circa il 4% del carico di lavoro è affetto da conversioni implicite.

Qualora venisse rilevato un numero considerevole di piani di esecuzione affetti da conversioni implicite, la seguente CTE ci potrà aiutare nell’identificazione delle query specifiche in cui avvengono le conversioni implicite, tra le colonne estratte vi è il testo della query, il piano di esecuzione completo e la porzione relativa ai warning di tipo PlanAffectingConvert in cui è stata utilizzata la funzione CONVERT_IMPLICIT.

WITH XMLNAMESPACES
(
 DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'
),
PlanAffectingConvert AS
(
 SELECT
 query_text = qt.text
 ,cp.objtype
 ,cp.refcounts
 ,cp.usecounts
 ,Plan_Warnings = qp.query_plan.query('//Warnings')
 ,qp.query_plan
 FROM
 sys.dm_exec_cached_plans AS cp
 CROSS APPLY
 sys.dm_exec_query_plan(cp.plan_handle) AS qp
 CROSS APPLY
 sys.dm_exec_sql_text(cp.plan_handle) AS qt
 WHERE
 (qp.query_plan.exist('//Warnings') = 1)
)
SELECT
 *
FROM
 PlanAffectingConvert
WHERE
 CAST(Plan_Warnings AS VARCHAR(MAX)) LIKE '%CONVERT_IMPLICIT%';

Concludendo, se avete il dubbio che il vostro carico di lavoro sia affetto da conversioni implicite, un buon punto di partenza è l’utilizzo delle query descritte in questo articolo… se pensate di non avere conversioni implicite nelle vostre query, fate lo stesso un controllo… non costa nulla!

Buon divertimento!

SQL Saturday Parma 2017 – Download area

Facebooktwittergoogle_plusredditlinkedin

Il materiale (slide e demo) utilizzato durante le sessioni presentate al SQL Saturday Parma 2017 è disponibile per il download accedendo allo schedule dell’evento.

Alcune sessioni sono state registrate, il post produzione dei video verrà eseguito nei prossimi giorni, i video saranno pubblicati sul canale UGISS di Vimeo, rimanete sintonizzati, seguiranno ulteriori dettagli!

L’occasione si presta per ringraziare tutto lo staff: l’Università degli Studi di Parma, il prof. Cagnoni, i ragazzi che hanno lavorato con Alessandro Alpi all’organizzazione dell’evento: Michael Denny, Gabriele Etta, Fabio Zanella, Rocco Cattani e Andrea Ferrari, gli Sponsor e tutti gli Speaker. Grazie anche a tutti i 190 partecipanti!

È stata una giornata di formazione ma anche di divertimento, le foto lo dimostrano!

Prossimi SQL Saturday

Il prossimo SQL Saturday molto vicino all’Italia 🙂 sarà a Lubiana, in Slovenia, il 09 Dicembre 2017 (ottima occasione per un weekend a Lubiana durante il ponte dell’08 Dicembre): SQL Saturday #687.

Il prossimo SQL Saturday in Italia sarà a Pordenone il 17 Febbraio 2018: SQL Saturday #707.

Il prossimo SQL Saturday in Italia, in una località balneare, sarà a Catania il 19 Maggio 2018.. e non finisce qui!