[SQL CONFERENCE] Performance Dashboard e Query Optimizer

Sessione di Stefano Stefani, Senior Software Enginier che lavora dal 2000 a Redmond nel team di SQL Server.

Per iniziare Stefano ha presentato la Performance Dashboard , ovvero una serie report disponibili con il Service Pack 2 che nascono dalla esperienza del PSS di SqlServer 2005 che ha creato questo strumento per meglio assistere i proprio clienti in caso di necessita di assistenza.

Secondo argomento trattato è stato il Query Optimizer. Questo componente interno a SqlServer è "quel signore" che decide come eseguire una query. Stefano che è uno degli sviluppatori che lo ha realizzato quindi ne conosce i pregi e difetti. Nella sua esposizione ha illustrato con dovizia di particolari come si comporta internamente, sulla base di quale informazioni prende le sue decisioni e come è possibile aiutarlo a fare un lavoro migliore evidenziando quei casi in cui la query non viene eseguita in modo ottimale e perchè.
Molto apprezzata la franchezza usata nella risposta data ad una domanda proveniente dal pubblico:
"Ah, sì questo comportamento è un bug del Query Optimizer"

Insomma un'ottima sessione al termine della quale è possibile leggere un piano di esecuzione di una query con la dovuta preparazione.

[SQL CONFERENCE] Ottimizzare Xquery con indici XML

Sessione tenuta da Paolo. Si parla di XQuery e dai feedback dei partecipanti alla sessione l'argomento risulta essere piuttosto di nicchia. Io personalmente l'ho sfruttato solo in un caso in passato ma senza la necessità di usare anche gli indici sui campi di tipo xml quindi per me la sessione è stata un piacevole approfondimento della materia.

Alla fine della sessione sono stati presentati 2 esempi reali in cui la nuova feature è stata utilizzata in applicazioni reali:

  • per firmare digitalmente file xml salvati nel database grazie al SQLCLR
  • per eseguire la entity extention via plug-in

Il secondo esempio è sicuramente un esempio molto furbo di come eseguire personalizzazioni in un'applicazione via plug-in senza "customizzare" anche la struttura del database in cui sono persistite le informazioni.

Technorati tags: , , ,

[SQL CONFERENCE] Livelli di isolamento

Prima sessione pomeridiana.
Speaker Andrea che cerca, ci riesce, a svegliarci con un esempio "molto interessante" che evidenzia come sia importate una piena comprensione della materia trattata.
Piccola nota: nel dietro le quinte l'esempio proposto da Andrea già aveva catturato l'attenzione degli altri speaker a tal punto che Stefano Stefani, membro del team di sviluppo di SQL Server e guest star della confernza, assiste alla sessione ed alla fine interviene attivamente con delle pillole che possono venire solo da chi come lui in questi ultimi anni ha vissuto di "pane e SQL Server".

Tornando al contenuto della sessione, Andrea ha cercato di portare esempi in cui il comporatamento di SQL Server potrebbe non risultare il comportamento desiderato. Nozioni che sicuramente dovrebbero essere ben fissate nella mente di ogni sviluppatore che accede ad un database con un numero elevato di connessioni maggiore a 1 e quindi gestire in maniera adeguata eventuali accessi concorrenti alle stesse informazioni (ps. anche applicazioni mono-utente potrebbero rientrare in questa categoria).

Che altro dire, se pensate che il Read-Committed Isolation Level, ovvero il livello di isolamento di default in SQL Server, vi farà dormire sonni tranquilli beh dopo aver visto la sessione di oggi non ne sono più così certo!

[SQL CONFERENCE] Server Management Objects

Seconda sessione di Davide alla SqlConference 2007 questa volta dedicata a Server Management Objects, ovvero una serie di oggetti managed per eseguire operazioni di gestione e manutenzione sul nostri Server Sql (dalla versione 7 in poi)

Personalmente avendo già in passato usato la versione COM distruita con la versione 2000 di SqlServer, chiamata SQLDMO, già conoscevo a grandi linee il modello ad oggetti e le operazioni che si possono effettuare.

La mia attenzione in questa sessione é stata catturata da PowerShell, uno strumento per me nuovo con cui Davide ha mostrato come usare oggetti managed, in questo caso quelli di SMO, senza dover per forza realizzare un'applicazione compilata.

Una cosa da ricordare per chi vuole imparare ad usare SMO installare i samples di SQLServer 2005 che creano la cartella C:\Program Files\Microsoft SQL Server\90\Samples in cui troviamo numerosi esempi anche su SMO. 

[SQL CONFERENCE] Service Broker

Sessione di livello 400 tenuta da William Franchini su Service Broker.
Premetto che ho sempre avuto alcuni pregiudizzi nell'utilizzo del service broker semplicemente perchè usarlo vuole dire usare SQLServer 2005 non solo come database server ma anche come application server in cui inserire logica di business e la sessione mi ha confermato che questa è una scelta architettura quasi irreversibile.

Fatta questa premessa durante la sessione è stato presentato un caso reale in cui il service broker viene utlizzato in due diversi scenari:

  • operazioni asincrone
  • applicazioni distribuite

Il primo scenario mi ha convinto abbastanza, ovvero se uso SQLServer 2005 come back-end per la mia applicazione posso decidere di usare il broker per svolgere operazioni asincrone sul mio db. Ho già pensato ad un paio di possibili utilizzi nel progetto che sto sviluppando in questo periodo che userà SQLServer 2005 versione Express. Approfondirò per capire se mi semplifica la vita o meno.

Per quel che riguarda il secondo scenario penso che l'esempio sia stato affrontato un po' troppo velocemente e senza vedere la parte di codice WCF necessaria per far comunicare con il broker quindi magari lo riguarderò con più calma quando sarà possibile scaricare gli esempi.

Technorati tags: ,

[SQL CONFERENCE] SQLServer CE

Sessione di Roberto Brunetti che vuole essere una serie di best practices sull'accesso ai dati persistiti in SQLServer CE sia da dispobsitivi Mobile sia da dispositi Desktop. Tanti i consigli pratici sulle varie possibilità e sulle tecniche per realizzare un data access layer per SQLServer CE.

Per riassumerli brevemente usare (Base Table Cursor e Data Reader) e non usare (vedi. DataSet e DataTable). Fare chacing dei parametri se il dispositivo ha le caratteristiche adatte.

Interessante l'esempio di come creare un progetto desktop per fare debugging in modo "classico" ma su codice preso dalla soluzione mobile.

Frase topica della sessione:

Quando la RAM scarseggia ... la papera non galleggia.

Technorati tags: ,