Основною метрикою, яку я завжди вважав за IO в SQL Server, є не IOP або довжина черги диска, а пропускна здатність диска (сек / читання та сек / запис). Загалом, бази даних полягають не в тому, скільки операцій можна кинути на диск, а в тому, як швидко ці операції виконуються. Загальне правило - мати менше 20 мс / операція (хоча нижча завжди краще). Більш детально можна ознайомитися в цій статті .
Довжина черги диска - це нечітка статистика і більше не актуальна. Проблема полягає в тому, що значення вимірює чергу для одного диска, але тепер, коли ми живемо в епоху RAID, SAN та інших розподілених сховищ, немає ніякого способу правильно перевести це значення на значуще число. Чудовим початковим місцем для показників ефективності є цей плакат від Quest / Dell, який дає багато матеріалів та пояснень, чому вони важливі чи чому вони не важливі. Не потрібно використовувати їх усі, але вони - початок.
Для того щоб перевірити свій IO, ви повинні зрозуміти навантаження на піку. Скільки транзакцій і скільки кешується? Якщо ви не знаєте і не вимірювали їх, судити важко. Ви можете створювати робочі навантаження та використовувати такі інструменти, як SQLIO, щоб перевірити ваше сховище, але для створення належного тесту вам знадобляться шаблони навантаження.
Нарешті, примітка про AWS: Наскільки мені відомо, Amazon не гарантує продуктивність IO в AWS. Це перш за все тому, що сховище - це масивний спільний ресурс, і неможливо оцінити шаблони вас та ваших сусідів на певній області зберігання (див. Проблему Шумного сусіда ).
Моєю рекомендацією було б виділити якомога більше пам’яті. SQL Server буде витісняти речі з пам’яті лише у тому випадку, коли в буферному пулі знаходиться під тиском та простором (на основі LRU-K). Отже, якщо ви буферний пул може зберігати більшу частину бази даних у пам’яті, ви можете пом'якшити деяку функціональність. Також врахуйте тактику, яка може зберігати об’єкти кешу «теплими». Нарешті, слідкуйте за SQL 2014 та новою функцією Hekaton .