Disk IO için kullandığım başparmak kuralı:
SATA için iş mili başına 75 GİB.
FC / SAS için iş mili başına 150 IOP
SSD için iş mili başına 1500 GİB.
Dizi başına GİB'lerin yanı sıra terabayt başına GİB'i de dikkate alır. SATA + RAID6 yapıyorsa TB oranı başına çok kötü bir GİB ile sonuçlanması nadir değildir. Bu çok fazla gelmeyebilir, ancak genellikle bir dizide 'boş alan' tespit eden ve kullanmak istediğiniz bir kişiyle karşılaşırsınız. Çoğu kurumsal sistemde tam tersi olduğunda, insanların konser alması ve iops'u görmezden gelmesi yaygındır.
Ardından RAID için yazma cezası maliyetini ekleyin:
- RAID1, RAID1 + 0 için 2
- RAID5 için 4 (veya 4)
- RAID6 için 6.
Yazma cezası kısmen güzel büyük yazma önbelleklerini ve doğru koşullarda hafifletilebilir. Çok sayıda ardışık yazma GÇ'niz varsa (DB günlükleri gibi), RAID 5 ve 6'daki bu yazma cezalarını önemli ölçüde azaltabilirsiniz. Tam bir şerit yazabiliyorsanız (örneğin, iş mili başına bir blok), eşitliği hesaplamak için okumak zorunda değilsiniz.
8 + 2 RAID 6 setini varsayalım. Tek bir yazma GÇ için normal çalışmada şunları yapmanız gerekir:
- 'Güncellenmiş' bloğu okuyun.
- İlk eşlik bloğunu okuyun
- İkinci eşlik bloğunu okuyun
- Eşliği yeniden hesapla.
- tüm 3'ü yaz. (6 IO).
Önbelleğe alınmış tam şerit yazma ile - örneğin RAID şeridinin 8 ardışık 'parçası' ile bir okumaya gerek kalmadan tüm lottaki pariteyi hesaplayabilirsiniz. Yani sadece 10 yazma gerekir - her veriye bir tane ve iki parite.
Bu sizin yazma cezanızı yapar 1.2.
Ayrıca, IO'nun önbelleğe alınmasının kolay olduğunu aklınızda bulundurmanız gerekir - hemen diske almanıza gerek yoktur. Yumuşak bir zaman kısıtlaması altında çalışır - ortalama olarak gelen yazmalarınız iş mili hızını aşmadığı sürece, hepsi 'önbellek hızında' çalışabilir.
Öte yandan Okuma G / Ç, zor zaman kısıtlaması yaşar - veriler alınana kadar bir okumayı tamamlayamazsınız. Bu noktada okuma önbellekleme ve önbellek yükleme algoritmaları önem kazanır - tahmin edilebilir okuma kalıpları (örneğin yedeklemeden alacağınız sıralı) tahmin edilebilir ve önceden getirilebilir, ancak rastgele okuma kalıpları olamaz.
Veritabanları için genellikle şunları varsaymanızı öneririm:
'veritabanı' ES'nizin çoğu rastgele okunur. (örneğin rastgele erişim için kötü). Ek yükü karşılayabiliyorsanız, RAID1 + 0 iyidir - çünkü yansıtılmış diskler iki okuma kaynağı sağlar.
'log' IO'nuzun çoğu sıralı yazımdır. (ör. önbellekleme için iyidir ve birçok DBA'nın önereceğinin aksine, muhtemelen RAID10 yerine RAID50 kullanmak istersiniz).
İkisinin oranının zor olduğunu söylemek zor. DB'nin ne yaptığına bağlıdır.
Rastgele okuma IO, önbellekleme için en kötü durum olduğu için, SSD'nin gerçekten kendi başına geldiği yer - birçok üretici SSD'yi önbelleğe almayı rahatsız etmiyor çünkü zaten aynı hızda. Bu nedenle özellikle geçici veritabanları ve dizinler gibi şeyler için SSD iyi bir yatırım getirisi sağlar.