SQL Server'da IO için her zaman düşündüğüm birincil metrik, IOP'ler veya Disk Kuyruk Uzunluğu değil, disk çıktısıdır (sec / reads ve sec / writes). Genel olarak, veritabanları bir diske kaç işlem atabileceğiniz değil, bu işlemlerin ne kadar hızlı tamamlandığı ile ilgilidir. Genel kural 20 ms'den / operasyondan daha azına sahip olmaktır (daha düşük olan her zaman daha iyidir). Bu makalede daha fazla ayrıntı bulunabilir .
Disk Kuyruk Uzunluğu sahte bir durumdur ve artık geçerli değildir. Bununla ilgili sorun, değerin tek bir sürücü için kuyruğu ölçmesidir, ancak artık RAID'ler, SAN'lar ve diğer dağıtılmış depolama çağında yaşıyoruz, bu değeri anlamlı bir sayıya doğru şekilde çevirmenin bir yolu yok. Performans metrikleri için harika bir başlangıç noktası, Quest / Dell'den bu afişin neden veya neden önemli olmadıklarına dair çok fazla bilgi ve açıklama sağlamasıdır. Hepsini kullanmak zorunda değilsiniz, ama bunlar bir başlangıç.
ES'nizi test etmek için, iş yükünüzü en üst düzeyde anlamanız gerekir. Kaç işlem ve ne kadar önbellek var? Bunları bilmedikçe ve ölçmedikçe, yargılamak gerçekten zor. Depolama alanınızı test etmek için iş yükleri oluşturabilir ve SQLIO gibi araçları kullanabilirsiniz , ancak uygun bir test oluşturmak için iş yükü modellerine ihtiyacınız olacaktır.
Son olarak, AWS hakkında bir not: Bildiğim kadarıyla, Amazon AWS'de IO performansını garanti etmeyecektir. Bunun nedeni öncelikle depolamanın büyük bir paylaşılan kaynak olması ve belirli bir depolama alanında sizin ve komşularınızın kalıplarını ölçmeniz imkansız olmasıdır (bkz. Gürültülü Komşu sorunu ).
Benim tavsiyem mümkün olduğunca fazla bellek ayırmak. SQL Server yalnızca arabellek havuzunda (LRU-K tabanlı) basınç ve boşluk altındaysa, malzemeleri bellekten çıkarır. Bu nedenle, arabellek havuzunuz veritabanının çoğunu bellekte saklayabilirse, bazı hızlı performansları azaltabilirsiniz. Ayrıca, önbellek nesnelerini "sıcak" tutabilecek taktikleri düşünün. Son olarak, SQL 2014 ve yeni Hekaton özelliğine dikkat edin.