Elogio di Ingo Rammer

Conosco una persona che apre "Visual Basic Journal" soltanto per leggere gli articoli di Paolo Pialorsi e Ingo Rammer. Premesso che, secondo me, la persona di cui sopra non ha tutti i torti circa la qualità media degli argomenti trattati negli ultimi tempi in VBJ - soprattutto se considerato in rapporto al prezzo della rivista - ... sono pienamente daccordo con lui circa il valore degli articoli di Pialorsi e di Rammer. In particolare, quest'ultimo è capace di tarare fuori dal suo cilindro delle osservazioni tanto semplici quanto brillanti, che si traducono in best practice di grande valore.

Per esempio, se si legge il suo ultimo articolo apparso su VBJ (n. 63) - intitolato "Ottimizzare i lock sui database" -, egli espone alcune linee guida esemplari per far fronte ai blocchi in ambienti ad alta concorrenza, che - a mo' di promemoria - riassumo di seguito:

una prima transazione (T1)

 UPDATE Products
 SET UnitsInStock = UnitsInStock + 10
 WHERE ProductsID = 7

blocca questa seconda (T2)

 SELECT UnitPrice
 FROM Products
 WHERE ProductID = 7

a meno che esista un indice (non-unique e non-clustered) su ProductID e UnitPrice, di modo che la T2 venga soddisfatta pienamente dall'indice, il quale non viene assolutamente bloccato dalla T1.

Un'altra best practice per applicazioni scalabili è non usare metodi di aggiornamento di accesso automatici (tipo DataSet), bensì stored procedure ben localizzate. Inoltre, per evitare lock bloccanti a livello di pagina, si può esplicitare attraverso la direttiva WITH (ROWLOCK) un lock a livello di record, piuttosto che lasciare decidere a SQLServer, il quale potrebbe optare per un lock a livello di pagina.

 UPDATE Products
 WITH (ROWLOCK)
 SET UnitsInStock = UnitsInStock + 10
 WHERE ProductID = 7

...anche se a qualcuno potrebbe sembrare poca cosa... bhè a me decisamente NO.

Published giovedì 30 giugno 2005 20.31 by admin

Comments

No Comments