febbraio 2009 - Posts

Disk Alignment

L'implementazione di un database server inizia molto prima del setup ed una delle attività molto spesso sottovalutate è la creazione della partizione e la formattazione del disco su cui saranno posizionati i file di database.

Mi capita raramente, anche in ambienti di grandi dimensioni, di trovare un sistema ottimizzato anche da questo punto di vista e porre rimedio a questi errori iniziali è spesso impossibile su un sistema già in produzione.

Diverse fonti riportano benefit che arrivano facilmente a superare il 20-30% nelle attività di IO quando viene realizzato il Disk Alignment. Che cosa è il Disk Alignment è spiegato molto efficacemente in questo post.

Purtroppo a contribuire alla mancata applicazione di questa best practice è il fatto che fino a Windows Server 2003 R2 l'utilizzo del Disk Management per creare una partizione non realizza il Disk Alignment. Occorre quindi creare la partizione utilizzando DiskPart.exe come indicato in questo link che sebbene rivolto ad Exchange è in tutto e per tutto applicabile anche a SQL Server.

Come fare a sapere se è stato realizzato il Disk Alignment? In teoria ci sarebbe lo stesso Diskpart.exe ma dal momento che restituisce il risultato arrotondato al kb viene meno la precisione che invece richiediamo a questo tipo di indagine attività. Uno dei metodi sicuramente più attendibili del Diskpart.exe è utilizzare WMIC come indicato in questo articolo.

Nell'illustrazione qui sotto si vede un esempio di utilizzo

Dividendo il valore nella colonna StartingOffset per quello in BlockSize si evince che le partizioni allineate sono solo quelle relative al Disk 2, al Disk 6 e al Disk 7, ovvero quelle dove il risultato di StartigOffset / BlockSize è 64 o un multiplo di esso.

Bye

 

 

Posted by lbianchi with 4 comment(s)
Filed under: ,

SSMS 2008 Express

Per SQL Server 2005 esisteva già la possibilità di scaricare il solo SSMS nella versione Express; con l'uscita di SQL Server 2008 chi voleva installare sulla propria postazione soltanto i client tools doveva scaricare una delle 2 versioni di SQL Server Express che avevano anche i client tools, ovvero SQL Server Express with Tools oppure SQL Server Express with Advanced Services. Chi aveva scaricato la "versione base" e voleva soltanto aggiungere i client tools doveva scaricare per intero uno dei 2 pacchetti di cui sopra.

Ieri MS ha reso disponibile la possibilità di scaricare, con un download separato, il SQL Server Management Studio Express 2008.

Bye

 

Posted by lbianchi with no comments
Filed under:

Perchè i DBA odiano gli sviluppatori (salvo poche eccezioni...)

Rompo il silenzio del mio blog che dura da oltre un mese (questo periodo sono stato un po indaffarato) per segnalarvi questo link che mi ha girato pochi minuti fa Andrea Montanari.

La lettura è sicuramente divertente se vista in maniera ironica e devo dire che sottoscrivo in pieno quanto scritto dall'autore in quel post. Sono del parere che la maggior parte delle applicazioni oggi sul mercato farebbero un notevole salto di qualità se nella fase di sviluppo fosse stato coinvolto, anche marginalmente, qualcuno con conoscenze di SQL Server anche non approfondite. Purtroppo non si tratta di casi isolati di piccoli software, sviluppati da piccole aziende, destinati a realtà altrettanto piccole. Ho in mente diversi gestionali molto blasonati e che costano cifre importanti nel budget di grandi aziende, con cui mi sono ritrovato a "scontrarmi".

Giusto questa mattina un nutrito gruppo di consulenti ha trovato la risposta a degli errori che si presentano sistematicamente in un loro script. Questo team di menti geniali ha individuato il problema nel fatto che prima di eseguire lo script viene eseguito un backup del transaction log (il tutto all'interno di un job schedulato). Per farli contenti disabiliterò lo step che esegue il backup, ma forse qualcuno potrebbe indirizzarli verso un'altra strada...

Msg 2627, Sev 14, State 1, Line 146 : Violation of PRIMARY KEY constraint 'PK_xxx'. Cannot insert duplicate key in object 'dbo.xxx'. [SQLSTATE 23000]
Msg 3621, Sev 14, State 1, Line 146 : The statement has been terminated. [SQLSTATE 01000]

 

Bye

 

Posted by lbianchi with 2 comment(s)
Filed under: ,