На этой странице Вы можете ознакомиться с результатами сравнительного тестирования производительности. Ранее сравнивались только PHP-скрипты, но новый Sypex Dumper 2 настолько быстрый, что мы решили включить в тестирование и десктопные приложения.
В ходе тестирования каждый участник тестирования должен был создать резервную копию тестовой БД без сжатия. Настройки по умолчанию.
Тестирование проводилось на Apache 2.2.11, MySQL 5.1.39 и PHP 5.2.11, под управлением Windows 7 x64. Параметры компьютера Core 2 Quad Q6600 @ 3 ГГц, 8 ГБ DDR2.
Раунд 1.
Для тестирования была выбрана база данных реального сайта. В процессе тестирования пришлось уменьшить количество записей, поскольку многие участники начинали слишком сильно тормозить.
Тестовая БД MySQL:
-
таблицы CMS (в том числе 20 000 новостей и 4 000 статей вместе занимающих более 60 МБ);
-
другие таблицы, включая статистику (более 18 МБ).
Всего 25 таблиц, 177 258 записей общим объемом 78 МБ, часть таблиц в cp1251, часть в utf8.
Результаты отсортированы по скорости экспорта, поскольку, экспорт делается чаще.
Программа | Экспорт (сек) | Импорт (сек) | Размер (КБ) |
---|---|---|---|
2 | 5 | 83 033 | |
mysqldump 10.13* + mysqlcli | 3 | 12 | 140 007 |
5 | 8 | 83 926 | |
SQLyog Enterprize 8.14 | 6 | 12 | 140 018 |
Navicat Premium 8.2.15 | 7 | 36 | 148 771 |
phpMyAdmin 3.2.2.1 | 10 | 21 | 141 005 |
MySQL Dumper 1.24 | 14 | 87 | 155 449 |
dbForge Studio for MySQL 3.60.351.1 | 15 | 76 | 146 790 |
MySQL-Front 5.1.4.13 | 16 | 128 | 146 400 |
MySQL Administrator 1.2.17 | 34 | 18 | 140 398 |
HeidiSQL 4.0.2677 | 63 | -** | 141 232 |
* - mysqldump запускался с параметром --opt из php скрипта который замерял время выполнения.
** - задача не была выполнена из-за ошибки
Комментарии к результатам
Sypex Dumper единственный из участников применяет автоматическое изменение кодировки в зависимости от кодировки объектов, за счет этого он экспортирует данные без перекодировки, что экономит дополнительное время. Кроме того, используется специальный оптимизированный формат файла и умное восстановление, благодаря которому дампер минимизирует количество запросов к серверу и импортирует каждый объект в «родной» кодировке.
Многие участники не умеют работать в режиме Extended Inserts, из-за чего импорт таблиц становится в несколько раз медленнее.
Раунд 2: Битва титанов.
Основная проблема Sypex Dumper Lite 1.0.8 была в том, что он начинает тормозить на таблицах с очень большим количеством записей. Это наглядно видно в следующем тесте.
Итак, дальше мы решили провести тестирование среди лидеров на базе больших размеров. База данных та же, но до уменьшения размера для первого теста.
Те же 25 таблиц, но уже 242 321 запись общим объемом 672 МБ, часть таблиц в cp1251, часть в utf8.
Программа | Экспорт (сек) | Импорт (сек) | Размер (КБ) |
---|---|---|---|
12 | 50 | 706 417 | |
mysqldump 10.13 + mysqlcli | 52 | 90 | 1 251 329 |
SQLyog Enterprize 8.14 | 57 | 92 | 1 251 497 |
87 | 54 | 709 243 |
Комментарии по поводу mysqldump, и почему дампер работает быстрее.
- Естественно из-за того что дампер умнее работает с кодировками, а не перекодирует всё в UTF8 (если сделать бэкап таблиц отдельно cp1251, отдельно utf8, с указанием точной кодировки данных в настройках mysqldump, то разница будет меньше).
- Дампер очень сильно оптимизирован, у него нет пары десятков настроек как у mysqldump (что приводят к многочисленным лишним проверкам в процессе экспорта), дампер делает бэкап в оптимальном, с точки зрения скорости, режиме.
- При тестировании было замечено, что mysqldump быстрее обрабатывает таблицы с короткими записями (т. е. где средняя длина десяток или сотня байт) и таких записей сотни тысяч, в таких случаях mysqldump будет работать даже быстрее.
- При импорте, дампер быстрее парсит файл, так как заточен на «правильные» дампы, в то время как mysqlcli под обработку любых запросов.
- Тестирование проводилось на windows и вполне возможно на других системах результаты будут отличаться.
В дальнейшем еще планируется протестировать, как программы работают с новыми объектами (Представлениями, Триггерами и другими). Так как выяснилось, что даже официальный MySQL Administrator не умеет правильно бэкапить зависимые представления (т. е. если view1 использует view2, но в дампе они по алфавиту сохранены, то возникнет ошибка при импорте). Sypex Dumper 2 учитывает зависимость представлений, и в вышеприведенном примере, в дампе сначала будет view2, а потом view1.