+7 495 230 03 03 8 800 222 50 03

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

Дата публикации: 8 апреля 2022
Сравнение производительности 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. Необходимо выполнить закупку лицензий под систему, требования к специалистам по поддержке ниже, отдельной оптимизации производительности по БД не потребуется.

Лого ES мини

EFSOL

  • Аноним

    Спасибо, интересный тест, но вполне логичный результат.

    Однако третий вариант (1С на Винде + БД на Линуксе) выглядит странным выбором. Почему бы не протестировать вариант единой ВМ под Линуксом (1С + БД), как с случае с единой ВМ под Виндой? Это было бы логичнее! К тому же, насколько я знаю, есть вариант подключения БД Постгри аналогичный виндовому Шаред Мемори без “сетевых издержек”.

    Мало того, если пойти немного дальше, то стоило бы заменить гипервизор Hyper-V на что-то другое в продолжение последнего теста. Как вариант использовать VMware (в первую очередь), XEN, KVM. Разумеется результат единой ВМ Линукс под Hyper-V был бы очень интересен для прямого сравнения с Виндовым, но что-то мне подсказывает, что именно на Hyper-V мы и имеем 10% потерь!

    • https://efsol.ru/ EFSOL

      Спасибо за ваш развернутый комментарий. Мы будем продолжать проводить тесты и учтем ваше пожелание!

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.