kdv, 09.01.2019
Наша техническая поддержка регулярно сталкивается с вопросом, который в том числе задают и на форумах – «похоже, что диск медленный, как это определить?».
Причем, чаще всего такой вопрос возникает в виртуальных машинах, где администратор баз данных не имеет никакого доступа к настройкам и даже характеристикам дисковой подсистемы виртуальных машин.
Разумеется, померить скорость дисков можно разными средствами, от простых типа
CrystalDiskMark, до более сложных
IOMeter. Но для этого нужно, чтобы в момент измерения приложения не работали с диском. Иначе замеры будут сильно плавать, а под высокой нагрузкой еще и ухудшат производительность системы на время работы теста.
Кроме того, администраторы сервера или виртуальной машины могут не разрешить устанавливать стороннее ПО, даже на короткий период времени.
Тем не менее, на всех таких системах делается бэкап.
Бэкап (
gbak –b –g) это чтение всех данных базы данных, и их последовательная запись в файл. То есть, random read + sequential write.
Причем, размер бэкапа обычно составляет 60% от размера базы данных. Из-за версионности и страничной организации базы данных чтений происходит больше, чем записи.
Поскольку файл бэкапа обычно размещается на другом физическом диске, общая скорость бэкапа будет зависеть как от скорости случайного чтения диска с базой, так и скорости записи диска с бэкапом.
Конечно, можно поместить базу на hdd, а бэкап на ssd, но это крайне неэффективно, поэтому будем рассматривать вариант, когда скорость диска бэкапа не сильно хуже скорости диска с базой (обычно так и есть).
Для упрощения оценки просто берем размер файла бэкапа, и делим его на время, за которое этот файл полностью создан. Получим значение в «мегабайтах в секунду». Однако, чтобы оценить полученное значение в сравнении с другими системами, потребуется какой-то эталонный замер.
За эталон (который вполне вписывается в последущие результаты), взят десктопный компьютер, с базой на raid 1 из двух SATA 3 hdd, и бэкапом на SATA 3 hdd.
На нем бэкап 31 гигабайтной базы данных занимает 21 гигабайт, бэкап в монопольном режиме (никто больше с БД не работает) производится за 18 минут, скорость бэкапа 19 мегабайт в секунду.
Далее мы посмотрели на результаты бэкапа в
HQbird на 30 разных серверах, где размеры бэкапов не менее 5 гигабайт. Суммарно результаты выглядят так
Характеристика |
мб/сек |
Комментарий |
очень быстро |
50-70 |
Сюда попали несколько систем с бэкапами от 38 до 150 гигабайт. Бэкап 124 гигабайта за 42 минуты – это действительно быстро |
средне |
20-50 |
Здесь скорость на уровне 80 гигабайт за 30-40 минут. Это вполне нормально. Сюда же почти попадает тестовый замер на десктопе. |
медленно |
10-20 |
463 гигабайта за 11 часов, 80 гигабайт за 1 час 50 минут, 293 гигабайт за 5 часов – это действительно медленно, тем более по сравнению с десктопом |
очень медленно |
до 10 |
Это на уровне бэкапа 8.5 гигабайт за 1 час. Действительно, крайне медленно. |
Понятно, что на некоторых исследованных системах бэкап делается не во время нулевой нагрузки на сервер. Но в любом случае он делается во время минимальной нагрузки на сервер.
Ради интереса на том же десктопе было запущено одновременно 2 бэкапа, в результате они были сделаны со скоростью 18 мегабайт в секунду, по 19 минут каждый. Это 93% от одиночного бэкапа, или падение скорости на 7%, что не слишком много для одиночных HDD. На SSD вы вряд-ли заметите разницу, даже если запустите одновременно 3-4 бэкапа.
Так что оценка скорости при помощи бэкапа вполне адекватная, даже при наличии небольшой нагрузки на сервер в это время.
В общем, поводом для беспокойства может служить скорость бэкапа от 20 мегабайт в секунду и ниже. В этом случае либо диск для бэкапа слишком медленный, а бэкап должен делаться с максимально возможной скоростью. Либо диск с базой слишком медленный, и общая производительность системы хуже, чем могла бы быть.