IOPS проти пропускної здатності: вибір правильних метрик продуктивності для вашої бази даних
By Mirko Peters · · Updated
Коли архітектори та адміністратори баз даних починають проєктувати високопродуктивну інфраструктуру для важких навантажень на кшталт SQL Server, їх часто накриває лавина технічних абревіатур і специфікацій сховища. Серед найважливіших, але найчастіше неправильно розуміних метрик — IOPS і пропускна здатність. Вибір неправильної метрики під час виділення сховища може призвести до повільних запитів,
Automatically translated with AI from the original post. Read the English original

Коли архітектори та адміністратори баз даних починають проєктувати високопродуктивну інфраструктуру для важких навантажень на кшталт SQL Server, їх часто накриває лавина технічних абревіатур і специфікацій сховища. Серед найважливіших, але найчастіше неправильно розуміних метрик — IOPS і пропускна здатність. Вибір неправильної метрики під час виділення сховища може призвести до повільних запитів, перевантажених систем і марно витрачених бюджетів. Розуміння того, як ваша база даних насправді читає і записує дані, — це перший крок до побудови стійкої архітектури.
У цьому дописі ми розберемо фундаментальні відмінності між IOPS і пропускною здатністю, з'ясуємо, як вони працюють у інтенсивних навантаженнях баз даних, розглянемо типові архітектурні вузькі місця, як-от обмеження віртуальних машин, і подивимося, як моделі спільного сховища змінюють правила гри в сучасних хмарних середовищах.
Вступ до метрик продуктивності баз даних
Продуктивність сховища не можна виміряти за одним шаблоном. Коли ви дивитеся на хмарне сховище або традиційне SAN-обладнання, постачальники наводять вражаючі цифри щодо того, як швидко дані можуть переміщуватися і скільки операцій диск здатен обробити. Проте движок бази даних поводиться зовсім інакше, ніж служба потокового відео або великий файловий сервер. Відеосервер має проганяти великі безперервні потоки даних каналом, тоді як база даних витрачає час на пошук конкретних рядків, оновлення журналів транзакцій і кешування сторінок у пам'яті.
Щоб спроєктувати середовище, яке не підломиться під навантаженням, спершу потрібно зрозуміти відмінні характеристики ваших робочих навантажень. Почнімо з двох опор продуктивності сховища: операцій вводу-виводу за секунду (IOPS) і мегабайтів за секунду (пропускна здатність).
Що таке IOPS: чому бази даних покладаються на дрібні читання і записи
IOPS — це Input and Output Operations Per Second, тобто кількість операцій вводу-виводу за секунду. Метрика показує, скільки окремих запитів до сховища пристрій може обробити за одну секунду. Для інтенсивних платформ баз даних на кшталт SQL Server IOPS зазвичай є головною метрикою.
Бази даних за природою транзакційні. Коли користувач входить в applікацію, база даних зазвичай не читає і не записує один величезний файл розміром у кілька гігабайтів. Замість цього вона виконує тисячі крихітних, точкових операцій: може прочитати сторінку даних розміром 8 КБ, щоб отримати профіль користувача, записати кілька сотень байтів у журнал транзакцій або оновити індекс. Оскільки ці операції такі малі, головним чинником продуктивності стає здатність підсистеми зберігання обробляти великий обсяг окремих команд — її ємність IOPS. Якщо вашій базі даних для обробки транзакцій користувачів потрібно 10 000 IOPS, а диск сховища видає лише 3 000, запити почнуть створювати черги, блокування посиплються одне за одним, а час відгуку застосунку різко впаде.
Що таке пропускна здатність: коли важливіша ширина каналу
Якщо IOPS вимірює *кількість* операцій, то пропускна здатність вимірює *обсяг* даних, переміщених за певний час, зазвичай у мегабайтах за секунду (МБ/с). Уявіть IOPS як кількість машин, що проїжджають автостradoю, а пропускну здатність — як загальну вагу вантажу, який вони везуть.
Є сценарії, де пропускна здатність важить набагато більше за IOPS. Наприклад, нічне резервне копіювання бази даних, масштабний імпорт у сховище даних або аналітичні запити, які сканують мільйони рядків таблиці. Для таких завдань менш важливо, скільки окремих запитів обробляється за секунду; важливо, як швидко можна завантажити або вивантажити безперервний потік великих даних. Якщо спробувати виконати масштабну міграцію даних на сховищі з високим IOPS, але низькою пропускною здатністю, міграція триватиме на години довше, ніж очікувалося, бо канал даних просто недостатньо широкий.
Відображення робочих навантажень застосунків на конфігурації сховища
Кожен застосунок у вашому підприємстві має власні характеристики зберігання. Успішна архітектура середовища полягає в тому, щоб відобразити конкретні шаблони читання і запису на потрібну конфігурацію сховища. Наприклад, базі даних для обробки транзакцій (OLTP) потрібні високі можливості IOPS, щоб обробляти паралельні запити користувачів без стрибків затримки. І навпаки, озеру даних або звітному серверу може знадобитися висока пропускна здатність для обробки аналітичних запитів.
Складність виникає, коли на одному середовищі працює кілька робочих навантажень із конфліктними патернами. База даних SQL може досягати піку під час місячного фінансового звітування, сервер звітів може різко навантажуватися кожного ранку о 8:00, а система резервного копіювання може заповнювати мережу трафіком уночі. Раніше адміністратори виділяли окремі диски під кожен такий пік, що призводило до масового надлишку ресурсів і їх простою.
Вузьке місце віртуальної машини: не лише диски
Навіть якщо ви ретельно розрахуєте вимоги бази даних до IOPS і пропускної здатності та підключите найшвидші доступні диски, ви все одно можете натрапити на серйозні обмеження продуктивності. Причина часто полягає не в самому носії даних, а у віртуальній машині, до якої він підключений.
Наприклад, віртуальні машини Azure встановлюють жорсткі обмеження на загальні IOPS і пропускну здатність дисків залежно від розміру та рівня обраної ВМ. Ви можете підключити надшвидкі диски корпоративного класу до скромного розміру віртуальної машини, але ВМ обмежить трафік сховища власним максимальним порогом. Система зберігання може забезпечувати 20 000 IOPS, але якщо шлях через віртуальну машину обмежує вас 10 000 IOPS, то саме це і є вашою межею. Завжди перевіряйте і характеристики дисків, і розмір обчислювальних ресурсів, щоб переконатися, що шлях між ними достатньо широкий для вашого піку навантаження.
Як спільні пули сховищ змінюють планування продуктивності
Щоб вирватися з циклу виділення ізольованих, надмірно великих дисків під кожне окреме навантаження, сучасні хмарні архітектури звертаються до спільних пулів сховищ, схожих на традиційні мережі зберігання даних (SAN). Замість того щоб замикати продуктивність у окремих жорстких контейнерах, спільна модель об'єднує ємність і IOPS в одне ціле.
У середовищах із пулованими ресурсами показники продуктивності масштабуються разом із ємністю. Наприклад, в Azure Elastic SAN кожен 1 TiB базової ємності додає до центрального пулу певний обсяг продуктивності, зокрема 5 000 IOPS і 200 МБ/с пропускної здатності. Цей спільний пул дозволяє різним томам користуватися спільним бюджетом продуктивності. Якщо вашій фінансовій базі даних під час інтенсивного звітного циклу потрібен додатковий IOPS, а система складу в цей час простоює, ці ресурси можуть динамічно перерозподілятися, щоб забезпечити активне навантаження.
Уникнення підводних каменів: баланс між піковими вимогами та спільними лімітами
Хоча спільні пули сховищ пропонують чудову гнучкість і economію коштів, вони не є панацеєю для необмеженої продуктивності. Об'єднання ресурсів означає, що ви розраховуєте на статистичну ймовірність того, що не кожна база даних досягне свого абсолютного піку попиту в один і той самий момент.
Якщо кілька інтенсивних навантажень одночасно досягнуть піку і їхній сукупний попит перевищить ліміти спільного пулу, відбудеться тротлінг. Тротлінг спричиняє затримки, сповільнює запити і може призвести до каскадних тайм-аутів застосунків. Адміністраторам баз даних і фахівцям з інфраструктури необхідно ретельно аналізувати історичні метрики, розуміти свій пік одночасного використання та гарантувати, що спільний пул сховищ має достатній запас потужності, щоб без проблем витримати накладання піків попиту.
Висновок: вибір правильних метрик для вашої бази даних
Розуміння балансу між IOPS і пропускною здатністю є надзвичайно важливим для кожного, хто керує інтенсивними навантаженнями баз даних у хмарі. Точно визначивши, чого бракує вашим застосункам: дрібних швидких операцій чи великої пропускної здатності для даних, ви можете уникнути дорогих вузьких місць продуктивності. Крім того, впровадження сучасних парадигм сховищ, таких як спільні пули, може значно підвищити ефективність і допомогти вашій інфраструктурі масштабуватися разом із зростанням бізнесу. Щоб глибше зрозуміти, як сучасні хмарні архітектури сховищ вирішують саме ці завдання масштабування та продуктивності, обов'язково перегляньте відповідний випуск подкасту: Azure Elastic SAN — Simply Explained.