Сравнение производительности 1С на PostgreSQL и MSSQL 2019 в среде Hyper-V

Сравнение производительности 1С на PostgreSQL и MSSQL 2019 в среде Hyper-V

Мы продолжаем серию статей по анализу производительности 1C. В наших прошлых материалах мы изучали производительность гипервизоров, а также сравнивали различные виды облака для большого числа пользователей.

При построении высоконагруженной структуры для 1C:Предприятие помимо вопроса производительности, важную роль играет стоимость решения. Сможет ли бесплатная система выдавать схожие с платным продуктом результаты? Какова разница?

Целью данной статьи является изучение в 2022 году производительности 1С в среде Hyper-V, используя Microsoft SQL 2019 (далее MSSQL 2019) и PostgreSQL 12.

Состав тестового стенда

Аппаратная часть

  1. Supermicro X11DPi-N
  2. 2 x Intel Xeon Gold, 6244 (3,6 - 4,4 GHz, each 8 Core)
  3. ОЗУ 384 ГБ DDR4
  4. Хранилище RAID 10, Intel DC S3710 SSDSC2BA400G401 400 ГБ, 2х Intel NVME 750 ГБ SSDPED1K750GA01

Программная часть (1C)

  1. Платформа 1С:Предприятие 8.3.18.1698
  2. Конфигурация 1С:ERP Управление предприятием 2, редакция 2.4.13.282, объем базы 44 ГБ.

Программная часть (Windows, аппаратный сервер и ВМ)

  1. Windows Server 2019 Standard
  2. SQL Server 2019 Enterprise
  3. PostgreSQL 12.7-5.1C

Программная часть виртуальной машины LINUX

  1. Debian 11
  2. PostgreSQL 12.7-5.1C

Общая методика тестирования

  1. В рамках данной статьи мы применяем методику анализа, используя абсолютные значения погрешности.

    Описание методики определения абсолютной погрешности:

    • Определяются идеальные условия испытаний. В нашем случае это аппаратный сервер с Windows 2019 и установленными ролями 1С и SQL.
    • Выполняется по 3 теста APDEX с числом пользователей 50 и 100 на MSSQL и PostgreSQL.
    • Производим расчет абсолютной погрешности.
  2. Стенд определения значений погрешности.

    В состав стенда входит аппаратный сервер Windows с установленными ролями SQL и 1С:

    1. Сервер СУБД и 1С располагается на одном аппаратном сервере, Shared memory активирован.
    2. Проводится замер 3х тестов APDEX с числом пользователей 50 и 100 на MSSQL.
    3. Проводится замер 3х тестов APDEX с числом пользователей 50 и 100 на Postgres SQL.
  3. Основной тестовый стенд Windows.

    В состав стенда входит виртуальный сервер с установленными ролями SQL(Windows) и виртуальный сервер с ролью 1С (Windows).

    1. Проводится замер 1 теста APDEX с числом пользователей 50 и 100 на MSSQL.
    2. Проводится замер 1 теста APDEX с числом пользователей 50 и 100 на Postgres SQL.
  4. Основной тестовый стенд Windows + Linux.

    В состав стенда входит виртуальный сервер с установленными ролями SQL (Linux) и виртуальный сервер с ролью 1С на базе Windows.

    1. Используются две виртуальных машины. Одна содержит роль Application сервера 1С на Windows, другая роль сервера баз данных LINUX.
    2. Проводится замер 1 теста APDEX с числом пользователей 50 и 100 на MSSQL.
    3. Проводится замер 1 теста APDEX с числом пользователей 50 и 100 на Postgres SQL.
  5. Тест 1C: КИП (АПДЕКС).

    В основе методики АПДЕКС лежит набор инструментов 1С КИП. В данном случае использовался не весь функционал методологии. В процессе конфигурации теста была выполнена доработка базы клиентов под тестирование, выделены ключевые операции пользователей, такие как проведение поступления, реализации и т.д.

    Число пользователей закрепили на уровне 50 и 100.

    Стандартная методология АПДЕКС использует прогрессивную шкалу от 0 до 1, где 1 — это замечательный результат, а 0 - неудовлетворительный. Требуется указать целевое значение параметра производительности той или иной операции, создать сценарии и запустить тест.

    Мы же в своем исследовании не используем целевые показатели среднего времени выполнения операции.

  6. В режиме виртуализации выделяемые ресурсы распределены:
    1. Application серверы 1С — 14 ядер и 100 ГБ ОЗУ,
    2. SQL сервер — 16 ядер и 100 ГБ ОЗУ,
    3. при этом аппаратный сервер использовал все 32 ядра и 384 ГБ ОЗУ. Данная особенность никак не влияет на результаты тестирования.

Аппаратный сервер Windows. Настройки BIOS и ОС.

Перед работой с носителем были произведены настройки биоса. В данном случае необходимо было вручную выставить режим “Maximum Perfomance” в расширенных настройках CPU. Данные настройки применены для всех участников тестирования.

  • Power Technology — Custom
  • Power Perfomance Tuning — здесь нужно выбрать: или управлять питанием будет BIOS или ОС. Наш опыт с Hyper-V говорит о выборе в сторону OS control.
  • Energy_perf_bias_cfg mode — Maximum Performance.
  • Настройки электропитания ОС — Производительность.

Результатом наших манипуляций является фиксированная в режиме турбо-буст частота процессора.

Примечания:

  • На платформе Supermicro X11DPi-N BIOS V3.5 удалось зафиксировать стабильную частоту на уровне 4.2 ГГц, не используя T P и C State прерывания. Достаточно было выставить пункт Power Technology — Performance.

Конфигурация баз данных

Microsoft SQL 2019

  • Базовая настройка и установка описана в нашей инструкции.
  • Степень параллелизма — 1.
  • В случае, если производительности SSD-массива не хватает для корректной работы БД, выносим Temp DB на отдельный физический массив. Оценить загрузку массива можно счетчиком «очередь диска» в системе мониторинга Windows.
  • Новая база данных создается из копии базы model. Все настройки, указанные в model, будут в новой базе данных. Параметры Model меняем на следующие:
    • Начальный размер файла данных — от 1 ГБ до 10 ГБ.
    • Начальный размер журнала транзакций — от 1 ГБ до 2 ГБ.
    • Прирост файлов — 512 МБ.
  • Активируем Shared memory при условии, что SQL и 1С находятся на одном сервере.

PostgreSQL 12.7

Данная БД требует более тонкой настройки, нежели продукт Microsoft. В случае, если эту настройку не провести, а использовать продукт из «коробки», падение производительности существенное.

Все параметры находятся в файле postgesql.conf. Основные параметры нашего postgesql.conf:

max_connections = 200
shared_buffers = 25GB
effective_cache_size = 75GB
maintenance_work_mem = 2047MB
effective_io_concurrency = 1000 (только в LINUX,использовать осторожно, 
максимальное значение 1000 может дать чрезмерную нагрузку на дисковую подсистему)
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
max_files_per_process = 1000
random_page_cost = 1.1
work_mem = 1512MB
min_wal_size = 4GB
max_wal_size = 16GB
max_worker_processes = 16
max_parallel_workers_per_gather = 8
max_parallel_workers = 16
max_parallel_maintenance_workers = 4
max_locks_per_transaction = 128 
online_analyze.table_type = 'temporary' 
online_analyze.verbose = 'off' 
plantuner.fix_empty_table = 'on'
seq_page_cost = 0.5 (использовать осторожно, может снизить производительность)
random_page_cost = 0.5 (использовать осторожно, может снизить производительность)
                

Примечание:

Данные настройки подходят исключительно для нашего сценария работы. Все параметры подбираются индивидуально к каждой базе.

Сводные таблицы. Тест Гилева (больше - быстрее)

Таблица 1. Результаты теста Гилева. Отклонения от эталонного показателя.
Результаты SQL
Аппаратный сервер MSSQL
58
Аппаратный сервер Postgres
-28%
ВМ 1С+MSSQL
-34%
ВМ 1С+Postgres
-43%
ВМ 1С Windows+Postgres linux
-48%

Сводные таблицы. Среднее время выполнения операций в секундах

Для теста использовались следующие параметры исследования:

  • Внеоборотные активы. формирование заданий к закрытию месяца
  • Внеоборотные активы. формирование заданий к закрытию месяца. удельный
  • Общее время запуска приложения
  • ТЦ_Проведение возврат товаров от покупателя
  • ТЦ_Проведение платежных поручений
  • ТЦ_Проведение ПТИУ
  • ТЦ_Проведение реализации товаров и услуг
  • ТЦ_Проведение счет на оплату

Общее число замеров APDEX для 50 пользователей — 3 380.

Общее число замеров APDEX для 100 пользователей — 6 700.

Таблица 2. Общая таблица значений среднего времени выполнения операций в секундах
Аппаратный сервер
ВМ 1С+MSSQL
ВМ 1С Windows + PostgreSQL Linux
Пользователи
Аппаратный сервер
50
Аппаратный сервер
100
ВМ 1С+MSSQL
50
ВМ 1С + MSSQL
100
ВМ 1С Windows+PostgreSQL Linux
50
ВМ 1С Windows+PostgreSQL Linux
100
БД
Аппаратный сервер
MSSQL
Аппаратный сервер
Postgres
Аппаратный сервер
MSSQL
Аппаратный сервер
Postgres
ВМ 1С+MSSQL
MSSQL
ВМ 1С+MSSQL
Postgres
ВМ 1С+MSSQL
MSSQL
ВМ 1С+MSSQL
Postgres
ВМ 1С Windows+PostgreSQL Linux
Postgres
Тест 1
Аппаратный сервер
3,19
Аппаратный сервер
3,24
Аппаратный сервер
7,93
Аппаратный сервер
8,47
ВМ 1С + MSsql
3,70 ± 0,14
ВМ 1С+MSSQL
4,25 ± 0,07
ВМ 1С+MSSQL
8,76 ± 0,04
ВМ 1С+MSSQL
10,95 ± 0,57
ВМ 1С Windows+PostgreSQL Linux
4,57 ± 0,07
ВМ 1С Windows+PostgreSQL Linux
12,38 ± 0,57
Тест 2
Аппаратный сервер
3,08
Аппаратный сервер
3,29
Аппаратный сервер
7,95
Аппаратный сервер
8,89
ВМ 1С+MSSQL
3,70 ± 0,14
ВМ 1С+MSSQL
4,25 ± 0,07
ВМ 1С+MSSQL
8,76 ± 0,04
ВМ 1С+MSSQL
10,95 ± 0,57
ВМ 1С Windows+PostgreSQL Linux
4,57 ± 0,07
ВМ 1С Windows+PostgreSQL Linux
12,38 ± 0,57
Тест 3
Аппаратный сервер
3,16
Аппаратный сервер
3,24
Аппаратный сервер
7,96
Аппаратный сервер
8,84
ВМ 1С+MSSQL
3,70 ± 0,14
ВМ 1С+MSSQL
4,25 ± 0,07
ВМ 1С+MSSQL
8,76 ± 0,04
ВМ 1С+MSSQL
10,95 ± 0,57
ВМ 1С Windows+PostgreSQL Linux
4,57 ± 0,07
ВМ 1С Windows+PostgreSQL Linux
12,38 ± 0,57
Среднее значение
Аппаратный сервер
3,14
Аппаратный сервер
3,26
Аппаратный сервер
7,95
Аппаратный сервер
8,73
ВМ 1С+MSSQL
Медленнее, по отношению к аппаратному серверу
ВМ 1С Windows + PostgreSQL Linux
Медленнее, по отношению к ВМ Windows
Абсолютная погрешность
Аппаратный сервер
0,14
Аппаратный сервер
0,07
Аппаратный сервер
0,04
Аппаратный сервер
0,57
ВМ 1С + MSsql
15,24%
ВМ 1С + MSsql
23,29%
ВМ 1С + MSsql
9,25%
ВМ 1С + MSsql
20,27%
ВМ 1С Windows + PostgreSQL Linux
7,05%
ВМ 1С Windows + PostgreSQL Linux
11,60%
Аппаратный сервер
Пользователи
Аппаратный сервер
50
БД
Аппаратный сервер
MSSQL
Аппаратный сервер
Postgres
Тест 1
Аппаратный сервер
3,19
Аппаратный сервер
3,24
Тест 2
Аппаратный сервер
3,08
Аппаратный сервер
3,29
Тест 3
Аппаратный сервер
3,16
Аппаратный сервер
3,24
Среднее значение
Аппаратный сервер
3,14
Аппаратный сервер
3,26
Абсолютная погрешность
Аппаратный сервер
0,14
Аппаратный сервер
0,07
Аппаратный сервер
Пользователи
Аппаратный сервер
100
БД
Аппаратный сервер
MSSQL
Аппаратный сервер
Postgres
Тест 1
Аппаратный сервер
7,93
Аппаратный сервер
8,47
Тест 2
Аппаратный сервер
7,95
Аппаратный сервер
8,89
Тест 3
Аппаратный сервер
7,96
Аппаратный сервер
8,84
Среднее значение
Аппаратный сервер
7,95
Аппаратный сервер
8,73
Абсолютная погрешность
Аппаратный сервер
0,04
Аппаратный сервер
0,57
ВМ 1С + MSsql
Пользователи
ВМ 1С+MSSQL
50
БД
ВМ 1С + MSSQL
MSSQL
ВМ 1С + MSSQL
Postgres
Тест 1
ВМ 1С+MSSQL
3,70±0,14
ВМ 1С+MSSQL
4,25±0,07
Тест 2
ВМ 1С+MSSQL
7,93
ВМ 1С+MSSQL
4,25±0,07
Тест 3
ВМ 1С+MSSQL
3,70±0,14
ВМ 1С+MSSQL
4,25±0,07
Среднее значение
ВМ 1С+MSSQL
Медленнее, по отношению к аппаратному серверу
Абсолютная погрешность
ВМ 1С+MSSQL
15,24%
ВМ 1С+MSSQL
23,29%
ВМ 1С+MSSQL
Пользователи
ВМ 1С+MSSQL
100
БД
ВМ 1С+MSSQL
MSSQL
ВМ 1С+MSSQL
Postgres
Тест 1
ВМ 1С+MSSQL
8,76±0,04
ВМ 1С+MSSQL
10,95±0,57
Тест 2
ВМ 1С+MSSQL
8,76±0,04
ВМ 1С+MSSQL
10,95±0,57
Тест 3
ВМ 1С+MSSQL
8,76±0,04
ВМ 1С+MSSQL
10,95±0,57
Среднее значение
ВМ 1С+MSSQL
Медленнее, по отношению к аппаратному серверу
Абсолютная погрешность
ВМ 1С+MSSQL
9,25%
ВМ 1С+MSSQL
20,27%
ВМ 1С Windows+PostgreSQL Linux
Пользователи
ВМ 1С Windows+PostgreSQL Linux
50
ВМ 1С Windows+PostgreSQL Linux
100
БД
ВМ 1С Windows+PostgreSQL Linux
Postgres
Тест 1
ВМ 1С Windows+PostgreSQL Linux
4,57±0,07
ВМ 1С Windows+PostgreSQL Linux
12,38±0,57
Тест 2
ВМ 1С Windows+PostgreSQL Linux
4,57±0,07
ВМ 1С Windows+PostgreSQL Linux
12,38±0,57
Тест 3
ВМ 1С Windows+PostgreSQL Linux
4,57±0,07
ВМ 1С Windows+PostgreSQL Linux
12,38±0,57
Среднее значение
ВМ 1С Windows+PostgreSQL Linux
Медленнее, по отношению к ВМ Windows
Абсолютная погрешность
ВМ 1С+MSSQL
7,05%
ВМ 1С+MSSQL
11,60%

Выводы

  • Продукция Microsoft ожидаемо показало лучшую производительность как на аппаратной платформе, так и в среде виртуализации.
  • В режиме 100 пользователей производительность аппаратной базы данных Postgres сравнялось по производительности с виртуальной MSSQL.

Наше исследование показало, что PostgreSQL является работоспособной альтернативой Microsoft SQL.

В режиме виртуализации при сравнении с ОС Windows, PostgreSQL выполнял операции медленнее до 11 процентов, что является достойным результатом при условии, что продукт бесплатен.

Что же выбрать: MSSQL или PostgreSQL?

  • Для компаний с большим числом пользователей экономически обоснованно использовать PostgreSQL ввиду отсутствия трат на лицензии. Для решения задач по поддержке и оптимизации кода под данную БД требуется квалифицированный персонал, как со стороны 1С, так и со стороны администрирования базы данных. Как следствие, такой персонал будет стоить дороже, а найти его сложнее.
  • В случае использования системы 1С с относительно малом числом пользователей, рекомендуется использовать MSSQL. Необходимо выполнить закупку лицензий под систему, требования к специалистам по поддержке ниже, отдельной оптимизации производительности по БД не потребуется.
Аватар EFSOL

EFSOL

Заказ демонстрации по продукту

Сравнение производительности 1С на PostgreSQL и MSSQL 2019 в среде Hyper-V

обязательные поля
*
Фамилия, имя, отчество:

Как к Вам обращаться?

 
  
Название организации:

Нужно нашим специалистам

 
  
Ваш E-mail адрес:

Необходим для обратной связи и оповещений

 
*
Ваш номер телефона:

Введите код и номер телефона

 
* Антиробот:
Введите ответ
                
  • Спасибо, интересный тест, но вполне логичный результат. Однако третий вариант (1С на Винде + БД на Линуксе) выглядит странным выбором. Почему бы не протестировать вариант единой ВМ под Линуксом (1С + БД), как с случае с единой ВМ под Виндой? Это было бы логичнее! К тому же, насколько я знаю, есть вариант подключения БД Постгри аналогичный виндовому Шаред Мемори без "сетевых издержек". Мало того, если пойти немного дальше, то стоило бы заменить гипервизор Hyper-V на что-то другое в продолжение последнего теста. Как вариант использовать VMware (в первую очередь), XEN, KVM. Разумеется результат единой ВМ Линукс под Hyper-V был бы очень интересен для прямого сравнения с Виндовым, но что-то мне подсказывает, что именно на Hyper-V мы и имеем 10% потерь!
  • Спасибо за ваш развернутый комментарий. Мы будем продолжать проводить тесты и учтем ваше пожелание!

Есть вопросы?

Закажите звонок специалиста!

Есть вопросы?

Закажите звонок специалиста!
*нажимая на кнопку, Вы даете согласие на обработку персональных данных