La métrique principale que j'ai toujours prise en compte pour les E / S dans SQL Server n'est pas les IOP ou la longueur de file d'attente de disque, mais le débit du disque (sec / reads et sec / writes). Dans l'ensemble, les bases de données ne concernent pas le nombre d'opérations que vous pouvez lancer sur un disque, mais la rapidité avec laquelle ces opérations sont terminées. La règle générale est d'avoir moins de 20 ms / opération (bien que plus bas soit toujours mieux). Plus de détails peuvent être trouvés dans cet article .
La longueur de la file d'attente du disque est une statistique bidon et n'est plus pertinente. Le problème est que la valeur mesure la file d'attente pour un seul lecteur, mais maintenant que nous vivons à une époque de RAID, de SAN et d'autres stockages distribués, il n'y a aucun moyen de traduire correctement cette valeur en un nombre significatif. Un excellent point de départ pour les mesures de performances est cette affiche de Quest / Dell qui vous donne beaucoup de choses et d'explications pour savoir pourquoi ou pourquoi elles sont importantes. Vous n'êtes pas obligé de les utiliser tous, mais c'est un début.
Pour tester votre E / S, vous devez comprendre votre charge de travail à son apogée. Combien de transactions et combien sont mises en cache? À moins que vous ne les connaissiez et ne les ayez mesurés, il est vraiment difficile de juger. Vous pouvez créer des charges de travail et utiliser des outils comme SQLIO pour tester votre stockage, mais vous aurez besoin de modèles de charge de travail pour créer un test approprié.
Enfin, une note sur AWS: à ma connaissance, Amazon ne garantira pas les performances d'E / S dans AWS. Cela est principalement dû au fait que le stockage est une ressource partagée massive et qu'il est impossible d'évaluer les modèles de vous et de vos voisins sur une zone de stockage particulière (voir le problème du voisin bruyant ).
Ma recommandation serait d'allouer autant de mémoire que possible. SQL Server ne poussera les éléments de la mémoire que s'ils sont sous pression et d'espace dans le pool de mémoire tampon (basé sur LRU-K). Donc, si votre pool de mémoire tampon peut stocker la plupart de la base de données en mémoire, vous pouvez atténuer certaines des performances explosives. Envisagez également des tactiques qui peuvent garder les objets du cache "au chaud". Enfin, gardez un œil sur SQL 2014 et la nouvelle fonctionnalité Hekaton .