TechEd Developer - Perchè non usare le Stored Procedure
Contesto
Sessione di Ingo Rammer sul tuning e l'analisi delle performance in applicazioni distribuite.
Rammer ha analizzato tutte le possibili cause che portano a problemi di performance in applicazioni distribuite e alla fine parlando dell'accesso ai dati ha detto che le stored procedure non devono essere usate perchè generano un sacco di traffico di rete inutile.
Considerazioni
Lo scenario di Rammer si inserisce in un contesto in cui ad esempio carico la mai entity "Customer" eseguo la modifica di un solo valore e aggiorno il db usando una sola sp mi ritrovo a passare tutti i dati presenti nella mia entity alla stored procedure generando quindi del traffico di rete inutile, l'uso di uno statement sql creato ad hoc, come del resto fanno i principali ORM, permette di gestire in maniera molto più granulare la situazione.
L'uso di uno statement specifico che si preocupa di aggiornare i soli dati realmente modificati permette inoltre di gestire meglio la concorrenza ottimistica nel caso in cui, ad esempio, il client X modifichi la Ragione Sociale mentre il client Y modifichi l'indirizzo della ns entity, in un caso come questo potrebbe non avere senso gestire la concorrenza ma basterebbe semplicemente accettare le 2 modifiche che non sono "concorrenziali".
In quest'ottica l'uso di sp porta ad un calo di performance dovuto proprio al traffico di rete inutile, l'unica soluzione sarebbe quella di avere tante sp quante sono le combinazioni possibili di parametri in ingresso, impensabile.
Per tutto le altre operazioni su db le sp vanno più che bene e lo stesso Rammer non ha fatto commenti di sorta, resta però doveroso leggersi questo:
http://msdn.microsoft.com/msdnmag/issues/06/11/SQLSecurity/default.aspx
.m