![](https://habrastorage.org/webt/nf/e2/ir/nfe2ir3nexcwq4x4g3mfhd98yzi.jpeg)
В сентябре компания DataCore представила новую линейку продуктов MaxParallel и первый продукт из серии — MaxParallel for SQL Server. MaxParallel делает простую вещь – ускоряет работу базы данных MS SQL, не требуя для этого никаких изменений самой базы (ее оптимизации и тп.) или аппаратной части (увеличения числа процессоров, памяти и тп.).
В чем идея: практически все современные сервер БД являются многоядерными, и приложения с успехом используют эти ядра для параллелизации вычислений. Но процесс ввода-вывода остается последовательным и использует одно процессорное ядро. И если заставить планировщик ввода-вывода использовать больше процессорных ресурсов, БД будет работать быстрее. По крайней мере, сможет работать быстрее. Уникальность MaxParallel состоит не только в том, что она ускоряет БД без серьезного вмешательства, но также в том, что она устраняет «узкое место», которое по-другому не устранить. Ни увеличение числа ядер в сервере, ни ускорение дисков на бэк-энде не изменит тот факт, что сама ОС использует для обработки ввода вывода только одно процессорное ядро. Единственным решением было бы распределение нагрузки между множеством серверов – больше серверов, следовательно, больше инстансов ОС и как следствие более производительная подсистема ввода-вывода. Но это подход дорогой и даже очень.
Еще до официального анонса продукта мы организовали закрытое тестирование продукта у ограниченного круга заказчиков. И у одного из них была следующая задача: с базой данных работают пользователи. Таких пользователей около 40. Нужно увеличить число пользователей, сохранив при этом приемлемое время отклика (или уменьшив его) а также увеличив число транзакций на пользователя (или опять таки, увеличив его). Вот что компания имела в начале:
![](https://habrastorage.org/webt/vr/ml/cj/vrmlcj3zcd9kxajna_zqez4a-vk.png)
При увеличении числа пользователей на 10 человек, отклик увеличился почти в 5 раз, а число транзакций снизилось на ~20%. А это неприемлемо. Попробовали включить кэширование. Это дало прирост производительности, но не тот на который рассчитывал заказчик.
![](https://habrastorage.org/webt/8b/p4/jp/8bp4jp05vbcr51bnuhtf2sbe3-c.png)
Причем стоит обратить внимание на то, что в обоих случаях (с кэшированием и без) падение производительности происходит тогда когда процессорных ресурсов в сервере еще более чем достаточно.
![](https://habrastorage.org/webt/6n/in/4z/6nin4zu5nyfjxwhtvtrxkutldi4.png)
Внедрение DataCore имело положительный эффект:
![](https://habrastorage.org/webt/t8/wm/of/t8wmofcvxgm1n1xjcamp7ivnhny.png)
Число пользователей смогли увеличить в 3 раза, сохранив при этом приемлемое время отклика. Причем для ускорения БД были использованы процессорные ресурсы, которые в остальных случаях было не задействованы.
Инсталляция
Процесс установки MaxParallel довольно простой, но все-таки нужно учесть несколько моментов:
- Сервер должен состветствовать минимальным системным требованиям: 4 ядра (или виртуальных процессора, если ставим на ВМ) поддерживаются только процессоры x86 (т.е. никаких Itanium, RISC и т.д). 8ГБ или более оперативной памяти. Поддерживаются операционные системы Windows Server 2008, 2008 R2, 2012 и 2016, а базы данных могут быть MS SQL 2008, 2012, 2014, 2016 и 2017. Ускорению могут быть подвержены любые диски (блоки 512 и 4 байта, MBR и GPT, Basic и Dynamic), любые файловые системы и любое количество разделов, но НЕ отчуждаемые носители.
- Нельзя ставить MaxParallel на общие диски (shared storage)
- На текущий момент MaxParallel не поддерживает работу с кластером.
- Для работы требуется .Net Framework 4.6.1. Если он уже не установлен, он будет автоматически инсталлирован при развертывании MaxParallel.
Для установки MaxParallel требуется, чтобы на том же сервере была установлена БД Microsoft SQL, это обязательно и мастер установки это проверяет. Если все хорошо, то мастер продолжает процесс инсталляции. Дальше процесс довольно прямолинейный: «Далее» -> «Далее» -> «Готово». Сам дистрибутив занимает 135 МБ. В процессе инсталляции потребуется одна перезагрузка для вступления в силу новых драйверов.
Интерфейса управления как такового у MaxParallel нет, есть только иконка в трее которая открывает окошко с одной только настройкой – «Вкл/Выкл» и окном для активации лицензии.
![](https://habrastorage.org/webt/2g/xp/sj/2gxpsjgehcim4xkobjumsczi-ag.png)
Управление решением производится через командную строчку, для чего предусмотрена утилита DcsMpAdmin.exe. С ее помощью можно включать/выключать сервис, выбрать диски для ускорения, ограничить объем памяти для сервиса MaxParallel. Но большинству эта утилита не понадобится.
![](https://habrastorage.org/webt/1z/-2/uc/1z-2uciefxi29klgjbbsykbeqhi.png)
Кому это поможет?
MaxParallel лучше всего проявляет себя ускоряя базу данных MS SQL 2008, чуть меньше на версиях 2012 и выше т.к. в них интенсивно используется in-memory. Но и тут эффект видно невооруженным глазом. Особенно хорошо ускоряются параллельные нагрузки на БД т.е. те случае когда производится много INSERT/UPDATE, а также создаются огромные отчеты.
Когда MaxParallel не поможет:
- последовательные нагрузки: один пользователь, один процесс в один момент времени (serial batch job)
- нет ресурсов которые можно использовать для ускорения: почти 100% загрузка процессора, и почти такая же по памяти.
- малая интенсивность работы с дисками (все производится либо в памяти (in-memory), либо производится большое число вычислений с малым числом обращений к самой базе т.е. к дискам)
Как попробовать
MaxParallel можно бесплатно попробовать в течении 30 дней, для чего имеется полнофункциональный триальный период. Самый простой способ понять, подходит ли MaxParallel для вашего окружения, это замерить параметры текущей работы MS SQL в терминах транзакций в секунду, времени отклика и времени создания отчетов, а также измерить потребление системных ресурсов, таких как память и процессорное время. После этого поставить MaxParallel, запустить его и провести повторные измерения, и сравнить результаты.
Можно также попробовать версию MaxParallel развернутую в MS Azure, надо только иметь аккаунт на Azure (это бесплатно). Там вам на час дадут виртуальную машину Windows Server 2012R c 8 ядрами на базе Intel Xeon E5-2673v3, 28ГБ памяти, с MS SQL 2014, MaxParallel и HammerDB. Можно самостоятельно проверить разные сценарии, но только на синтетике.
Для примера:
Работа HammerDB до MaxParallel.
![](https://habrastorage.org/webt/up/79/if/up79ifocmmzsnzp2lklmhtmbpnu.png)
Работа HammerDB после запуска MaxParallel.
![](https://habrastorage.org/webt/k-/00/tv/k-00tvr6gnhbuforvpwgg3smjo4.png)
В довесок предлагается довольно понятный документ, описывающий по шагам процесс тестирования. Но, при наличии знаний и навыков работы с MS SQL можно воплотить любой сценарий.
Лицензирование
MaxParallel продается по подписке сроком на один год и лицензируется также как MS SQL т.е. по ядрам и редакциям – Standard, Enterprise, Web, Express, Developer. Лицензия на MaxParallel должна совпадать с редакцией MS SQL. Стоимость озвучена на сайте:
![](https://habrastorage.org/webt/c9/ss/gl/c9ssglibixyz7iva-t-2uj2edki.png)
Также, для пользователей облачных ресурсов Azure можно купить виртуальные машины с MaxParallel на Azure Marketplace:
![](https://habrastorage.org/webt/q-/9c/29/q-9c29hztuokkrqvrfnsbxhpcow.png)
Заключение
Компания DataCore выпустила на рынок интересный инструмент, который найдет свое место в инфраструктуре. Это не универсальное решение, но сфера его применения ясна и четко определена. В дальнейшем компания планирует выпустить аналогичные решения для других областей: файловый сервер, Exchange (от инженеров я слышал даже слова “Linux”). Я призываю всех попробовать MaxParallel, и если на это нет аллергии, поделиться результатами тестирования. С Наступающим Новым Годом и успехов вам!
Антон Иванов
Региональный представить DataCore.
Anton.Ivanov@datacore.com