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