Международный производитель пищевых продуктов размещал в облаке DataLine базы данных Microsoft SQL и администрировал их самостоятельно. Базы собирали информацию о работе мерчендайзеров в разных странах азиатского региона.
После добавления информации из новых регионов у клиента появились проблемы с производительностью баз данных. Когда мерчендайзеры пытались отправить данные в систему, все зависало. При этом увеличить мощность виртуальных машин напрямую было невозможно в связи с ограничением лицензий Microsoft SQL Server, которые выпускаются по ядрам процессора. Специалисты клиента обратились в DataLine за аудитом баз данных.
Выяснить причины неудовлетворительной работы баз данных. Клиент самостоятельно обслуживал большой парк баз данных: 45 штук суммарным объемом несколько терабайт.
При этом в штате не было выделенного администратора баз данных (DBA), который бы мог проанализировать плохую производительность СУБД.
Предложить оптимальный выход из ситуации. У клиента выросло количество регионов, которые записывали данные в базу, это увеличило нагрузку. Самым простым решением казалось перейти на Enterprise-лицензию Microsoft SQL Server и увеличить объем виртуальных процессоров, но это грозило ростом бюджета. Клиент искал более эффективный и выгодный вариант.
Аудит выявил несколько проблем:
- Все “служебные” БД обращались к одной главной базе данных. На виртуальной машине с главной базой наблюдалась полная загрузка по процессору.
- Дисковая очередь превышала допустимую, из-за чего возникали проблемы с откликом.
- Клиент использовал БД Microsoft SQL не совсем по назначению. Мерчендайзеры через приложение загружали в “служебные” базы данных текстовые файлы – информацию о том, когда и какие продукты были выложены. СУБД обрабатывала эти файлы и распределяла по таблицам. Таким образом, Microsoft SQL использовалась для обработки текстовых файлов, для чего данный тип БД не подходит. Это и служило основной причиной высокой загрузки процессора.
Так как у клиента не было выделенного DBA, который бы смог заняться решением этих проблем, администрирование БД и устранение ошибок клиент передал специалистам DataLine.
Для всех баз данных клиент использовал SAS-диски и контроллеры LSI. Инженеры DataLine предложили разделить базы данных по нагрузке:
- для баз с интенсивным вводом-выводом выделили контроллер PVSCSI и SSD-диски;
- базы данных с объемными архивами снабдили SAS-дисками и отдельным PVSCSI- контроллером. Контроллер LSI оставили только для системного диска.
Уже на этом этапе клиент увидел значительное улучшение в производительности.
У клиента были выставлены некорректные ограничения по стоимости одного выполненного запроса (cost=5). В результате все запросы по умолчанию распараллеливались на все ядра процессора. Это приводило к полной загрузке ядер процессоров виртуальной машины.
Специалисты DataLine установили корректные значения стоимости запроса и увеличили количество запросов, выполняемых в рамках одного потока. Это частично решило проблему с высокой загрузкой процессора.
Как выяснилось в процессе аудита, клиент использовал Microsoft SQL для обработки текстовых файлов. Это не позволяло до конца решить проблему с чрезмерной загрузкой процессоров виртуальной машины.
Инженеры DataLine предложили изменить архитектуру: вынести обработку текстовых файлов из БД Microsoft SQL в отдельное решение, например, приложение, скрипт или базу данных MongoDB. Это приложение будет обрабатывать текстовые файлы, подключаться к SQL-серверу и вносить туда данные.
Без изменения архитектуры клиент столкнулся бы с необходимостью постоянного добавления ресурсов в виртуальную машину, а это имеет свои пределы. Новое решение позволило бы расти горизонтально: добавлять по мере необходимости количество сущностей, которые обрабатывают текстовые файлы.
Опытные DBA DataLine провели аудит и по результатам смогли найти главные причины плохой производительности БД.
После решения первоочередных проблем клиент передал базу данных на администрирование DBA DataLine. В рамках сервиса клиент получил не только круглосуточную техподдержку и решение возникающих инцидентов, но и все необходимое плановое обслуживание: обновление, резервное копирование, мониторинг.
Специалисты DataLine предложили альтернативу существующей архитектуре. Она поможет в корне решить проблему с производительностью системы. В данный момент клиент работает над возможными реализациями со своим подрядчиком – разработчиком ПО.
Новая конфигурация дисковой подсистемы, а также схема ротации архивов и оптимизированные запросы позволяют добиться быстродействия системы без перехода на Enterprise-лицензию SQL Server из-за увеличения объема vCPU. В будущем с новой топологией БД клиент также сможет масштабироваться горизонтально, не переплачивая за ресурсы.