Сравнение производительности 1С в СУБД MS SQL 2022 и PostgreSQL 17 на 500 пользователей

28.07.25

База данных - HighLoad оптимизация

Тест 1С: PostgreSQL 17 vs MS SQL 2022 для 500 пользователей. Результаты APDEX и времени выполнения. Анализ виртуализации и standalone. Читайте подробнее в статье.

В начале 2025 года компания 1С обновила свою демо базу ERP. Учитывая последние тенденции к импортозамещению, интересно было проверить:

  • кто быстрее в 2025 году — MS SQL 2022 или PostgreSQL 17.4 в режиме виртуализации и Standalone?

 

Глава 1. Тестовый стенд

 

Аппаратная среда

Сервер 1С

AMD EPYC 74F3 24/48 3.2 - 4.0 Ghz

512 Gb ECC DDR4

1x7.68 Tb NVME SSD Micron MTFDKCC7T6TFR

Сервер СУБД

Intel Xeon Platinum 8260 24/48 2.4 - 3.9 Ghz

256 GB ECC DDR4

1x1.7Tb  NVME SSD Samsung MZQL21T9HCJR-00A07

Сеть 10 Gb

 

 

Тесты дисковой подсистемы AMD

 

Рисунок 1 —  Производительность дисковой подсистемы сервера 1С (AMD).

Рисунок 1 — Производительность дисковой подсистемы сервера 1С (AMD).

 

 

Тесты дисковой подсистемы Intel

 

Рисунок 2 — Производительность дисковой подсистемы сервера СУБД (Intel).

Рисунок 2 — Производительность дисковой подсистемы сервера СУБД (Intel).

 

Примечание:

Диски, используемые в тестовом стенде, обладают параметром DWDP = 1. Данные диски подходят для использования в демо стенде, но не подходят для продакшн структуры.

 

Программная среда

 

 

Виртуальные машины (ВМ)

Standalone серверы

ОС

Ubuntu Server 24.04

Windows Server 2025

Ubuntu Server 24.04

Windows Server 2025

СУБД

PostgreSQL 17.4

MS SQL 2022

PostgreSQL 17.4

MS SQL 2022

Платформа

8.3.27.1507

 

В качестве системы виртуализации использовалась Hyper-V на базе WIndows Server 2025.

 

 

Выделяемые ресурсы для виртуальных машин:

 

  • Application сервер 1С — 46 ядер, 510  ГБ ОЗУ;

  • MS SQL 2022 сервер — 46 ядер, 250 ГБ ОЗУ;

  • PostgreSQL сервер — 46 ядер, 250 ГБ ОЗУ.

 

 

Инструменты тестирования

Название Ссылка  Объем базы
Тест-центр База 1С:ERP 2.5.17.117 от 1С
https://releases.1c.ru/additional_file?nick=EnterpriseERP20&path=Enterprise20%5cExtrafiles%5cE3K_2.5.17.117.dt
950 Gb
PosgreSQL 17.4 https://www.postgresql.org/  -

 

 

Глава 2.  Методика тестирования

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

 

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

  1. определяются идеальные условия испытаний. В нашем случае это
    аппаратные сервера с ролями сервера 1С и СУБД, объединенные в 10GB сеть;

  2. замер значений:

    1. аппаратный сервер 1C (Windows) + аппаратный сервер MS SQL 2022 (Windows), 3 теста (один “прогревочный” для кеширования базы);

    2. аппаратный сервер 1C (Windows) +  аппаратный сервер PostgreSQL 17.4 (Ubuntu Server 24.04). 3 теста (один “прогревочный” для кеширования базы)

3. Вычисляем значения по формуле абсолютной погрешности и относительной:

 

Рисунок 3 — Формула оценки абсолютной погрешности.

Рисунок 3 — Формула оценки абсолютной погрешности.

 

Рисунок 4 — Формула оценки относительной погрешности.

Рисунок 4 — Формула оценки относительной погрешности.

 

Проводим расширенные нагрузочные испытания для понимания предела работы стенда, чтобы избежать наличия “узких” мест:

  1. задаем субъективно избыточное число пользователей, для данной связки оборудования — 1500 сеансов;

  2. уменьшаем число сеансов, до тех пор, пока показатели времени выполнения и APDEX существенно не уменьшатся при дальнейшем сокращении числа сеансов;

  3. начиная с 750 сеансов, показатели существенно не уменьшались при дальнейшем уменьшении числа пользователей;

  4. для данной связки я остановился на 500 сеансах 1С.

 

Проводим замер целевых значений (конфигурация теста APDEX - 500 пользователей):

  1. выполняем замер тестов APDEX, используя, связки:

    а) ВМ 1C (Windows) + ВМ  MS SQL 2022 (Windows);

    б) ВМ 1C (Windows) + ВМ PostgreSQL 17.4 (Ubuntu Server)

  2. замеряем по одному разу, результаты вносим в таблицу. В таблице указываем два параметра — значение APDEX и время выполнения.

 

Примечание:

Тест  1C: КИП (APDEX).
В основе методики APDEX лежит набор инструментов 1С КИП. В данном случае использовался весь функционал методологии. Используются стандартная демонстрационная база ERP с сайта 1С.

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

 

Шкала оценки APDEX

 

Шкала APDEX

Значение

Оценка

от

до

0.00

0.50

неприемлемо

0.50

0.70

очень плохо

0.70

0.85

плохо

0.85

0.94

хорошо

0.94

1.00

отлично

 

 

Глава 3. Оптимизации

 

Оптимизация аппаратной части

 

 

Тюнинг процессора AMD

 

Рисунок 5 — Оптимизация процессора AMD.

Рисунок 5 — Оптимизация процессора AMD.

 

  • Advanced – CPU Configuration

    • Global C-State Control – Disabled

    • Local Apic Mode – 2x APIC — Рекомендация AMD

  • Advanced – NB Configuration

    • Determinism Control – Manual

    • Determinism Slider – Performance — Аналог Max Performance на платах Intel от Supermicro.

    • APBDIS – 1

    • Fixed SOC P-State – P0
      Два последних параметра переводят AMD Infinity Fabric (шину) и контроллеры памяти в режим полной мощности и устраняет колебания времени ожидания.

    • DF C-States – Disabled — Отключает энергосберегающий режим для CPU

Для выполнения операций пользовались документом представленном на официальном сайте:

https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/tuning-guides/amd-epyc-7003-tg-workload-57011.pdf

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

В результате на процессоре AMD получаем фиксированную в 3.8 ГГц частоту по всем 24 ядрам. 

 

 

Тюнинг процессора Intel

 

 

Рисунок 6 — Оптимизация процессора Intel.

Рисунок 6 — Оптимизация процессора Intel.

 

  • Advanced

    • Extended APIC – Enable
      Для многоядерных CPU настройка обязательна. Иначе при установке роли Hyper-V, число ядер в системе упадет до 1.

  • Advanced - Advanced power management Configuration

    • Power Technology – Custom

    • Power Performance Tuning – Bios Controls EPB

    • Energy_perf_bias_cfg mode – Maximum Performance

    • CPU P-State Control

      • SpeedStep (P-States) — [Enable]

      • Config TDP — [Normal]

      • EIST PSD Function — [HW_ALL]

      • Turbo Mode — [Enable]

    • Hardware PM State Control

      • Hardware P-States — [Disable]

    • CPU C State Control

      • Autonomous Core C-State: [Disable]

      • CPU C6 report: [Disable]

      • Enhanced Halt State (C1E): [Disable]

    • Package C State Control

      • Package C-State  - [C0/C1 state]

    • CPU T-State Control

      • Software Controlled T-States [Enable]
        Не стоит трогать этот режим, если не хотим повредить CPU

В результате на процессоре Intel получаем фиксированную в 3.1 ГГц частоту по всем 24 ядрам.

 

 

Часть 3. Оптимизации программной части. MS SQL сервер

 

  • используем материалы с сайта ИТС 1С для тюнинга БД https://its.1c.ru/db/metod8dev/content/5904/hdoc .

 

Данных инструкций будет достаточно для базовой настройки SQL сервера.

 

Часть 4. Оптимизации программной части. PostgreSQL сервер

 

  • используем материалы с сайта ИТС 1С для тюнинга БД https://its.1c.ru/db/metod8dev#content:5866:hdoc .

 

Опишем основные изменения:

random_page_cost  = 1.1 (для SSD)
effective_io_concurrency = 200
min_wal_size = 4 gb
max_wal_size  = 10 gb

 

Примечание:

  • отсутствуют правки параметра huge_pages. Дело в том, что на ИТС про эти параметры данных нет, а значит настройки специфические.

  • начиная с версии 16.4, 1С добавила в свою сборку Postgres параметр enable_temp_memory_catalog. 

    https://dl03.1c.ru/content/AddCompPostgre/17_2_4_1C/postgreUpdate_ru.htm

    Параметр новый и, при определенных условиях, обещает ускорить работу с временными таблицами. На ИТС про него информации нет и в сборке от 1С настройка не активна.

 

 

Глава 4. Тестирование

 

Пример окна “Настройки запуска”:

 

 

 

 

1. Значение APDEX на эталонных серверах с MS SQL

 

Название

Значение APDEX эталонной структуры MS SQL

Время выполнения 

Количество замеров

Тест 1

0.925

1.927

138 297

Тест 2

0.922

1.955

135 219

Тест 3

0.928

1.942

136 298

Среднее значение

0.927

1.941

-

Относительная погрешность

0.41%

1.79%

-

Абсолютная погрешность

0.004

0.03

-

 

 

 

2. Значение APDEX на эталонных серверах с PostgreSQL

 

Название

Значение APDEX эталонной структуры Postgres

Время выполнения 

Количество замеров

Тест 1

0,946

1,689

139 830

Тест 2

0,948

1,652

137 718

Тест 3

0,946

1,633

135 479

Среднее значение

0.947

1.658

 -

Относительная погрешность

0.15%

4.26%

 -

Абсолютная погрешность

0.001

0.071

 -

 

 

 

3. Значение APDEX на виртуальных машин

 

Название

Значения APDEX виртуальных машин

Время выполнения 

Количество замеров

1C (Windows) + MS SQL 2022 (Windows)

0.913

2.214

125 219

1C (Windows) + Postgres 17.4 (Ubuntu Server)

0.936

2.104

129 515

 

Глава 5. Выводы

 

Примерно раз в год провожу исследование производительности разных баз данных для 1С. Текущее исследование подтверждает тот факт, что компания 1С движется в сторону глубокой интеграции с PostgreSQL и достигает в этом положительных результатов.

PostgreSQL 17.4 обходит MS SQL по показаниям APDEX и времени выполнения как в режиме виртуализации, так и в Standalone режиме. Причем в Standalone режиме на впечатляющие 17.2%.

 

Таблица сравнения производительности APDEX и времени выполнения, учитывая погрешности метода:

 

 

Разница

APDEX

Время выполнения

ВМ

PostgreSQL быстрее на 2.5%

PostgreSQL быстрее на 5.2%

Физический сервер

PostgreSQL быстрее на 2.2%

PostgreSQL быстрее на 17.2%

 

 

Интерпретация результатов APDEX

 

  • APDEX-тест анализирует тысячи параметров и замеров, выдавая усредненную оценку. В данном случае он показывает, что система работает быстро как в виртуализации, так и на физическом сервере.

  • Если нам не требуется измерять большое число параметров системы, то следует использовать параметр “время выполнения”.

Вступайте в нашу телеграмм-группу Инфостарт

Производительность 1С APDEX PostgreSQL MS SQL

См. также

HighLoad оптимизация Программист 1С v8.3 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    5690    ivanov660    39    

59

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    8289    ivanov660    13    

60

HighLoad оптимизация Программист 1С v8.3 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    13638    Evg-Lylyk    67    

45

HighLoad оптимизация Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    6604    spyke    29    

52

HighLoad оптимизация Программист 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    9766    vasilev2015    22    

45

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

5 стартмани

15.02.2024    16347    315    ZAOSTG    100    

122
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. paulwist 18.07.25 08:12 Сейчас в теме
используем материалы с сайта ИТС 1С для тюнинга БД.


Ссылки битые в обоих случаях.
triviumfan; +1 Ответить
4. Metrika42 23 18.07.25 11:09 Сейчас в теме
(1) Добрый день! Спасибо за обратную связь. Из-за особенностей обработки ссылок данной площадкой - заменил на текстовые (также часть информации доступна после авторизации на внешних ресурсов).
2. triviumfan 102 18.07.25 10:42 Сейчас в теме
Ждем товарища Гилёва, думаю, он скоро появится, а сам боюсь комментировать :-)
PS: почему-то прошлую статью автора приняли "в штыки".
3. vde69 933 18.07.25 11:01 Сейчас в теме
почему не расписали на каких файловых системах проводили тесты?

для субд это очень важный показатель.... производительность Postgre на NTFS, FAT32, ext4, JFS будет сильно разная....
6. Metrika42 23 18.07.25 12:52 Сейчас в теме
(3) Добрый день! Тесты проводились на дефолтных ФС: NTFS и ext4 соответственно.
14. KaRaUl 20.07.25 00:07 Сейчас в теме
5. 2tvad 74 18.07.25 11:27 Сейчас в теме
Очень странная дисковая подсистема.

Для сервера бд один диск? Думаю, что в тесте все упирается именно в дисковую подсистему.
7. BaphoBush 7 18.07.25 17:36 Сейчас в теме
15. 2tvad 74 20.07.25 08:04 Сейчас в теме
(7) думаю, но допускаю, что ошибаюсь, хотя бы рейд 5-6. Или выделенные диски под темпдб и под транзактлог.

Мне кажется, что это логично. Все же 500 сеансов и один диск, с точки зрения бизнеса не увязывается.

Если бы сеансов было 30... Тогда, да, один диск для небольшой компании.
17. Metrika42 23 21.07.25 12:39 Сейчас в теме
(15) Приветствую! Я не стал выкладывать скрины мониторинга, чтобы не перегружать материал. Вместо этого описал кратко методику поиска узких мест начиная с этой строки:

"Проводим расширенные нагрузочные испытания для понимания предела работы стенда, чтобы избежать наличия “узких” мест: ... на 1500 пользователях начал упираться в процессор и диски (начали активно появляться очереди)"
23. Venberg 02.08.25 04:44 Сейчас в теме
(15) Вы наверное не заметили что это NVME диск с 850K IOPS на чтение.
И RAID 5 и 6 все же не про скорость. Для скорости RAID 10 и 50, 60.
Правда доступные RAID контроллеры сами дают только 1400-1700K IOPS. Как 2 современных серверных NVME диска.
И на таких IOPS вас больше могут опечалить задержки, вносимые самим RAID контроллером. Так что надежнее, для получения прогнозируемого результата, выбрать подходящий по размеру и IOPS диск NVME.
9. user1350307 18.07.25 19:47 Сейчас в теме
(5) Думаю, что первые "прогревочные" запуски как раз и были сделаны для того, чтобы уменьшить влияние дисковых подсистем, чтобы значительный объем данных был в RAM.

А ещё это проверяется счётчиками производительности, в случае с Windows и/или значениями показателей logical_read vs physical_read в MS SQL.
8. triviumfan 102 18.07.25 19:23 Сейчас в теме
У меня есть вопросы по поводу MAXDOP в MSQSL. Почему-то он был установлен в 1 (судя по рекомендациям), а в Postrge аналогичный параметр не трогали, а значит он равен 8 (вроде как должен).
А вообще, хорошо бы выложить конфиг, чтобы отпали все вопросы. Ну, и для майков через sp_configure. И тогда все увидят все настройки.
Созинов; user1350307; +2 Ответить
20. Metrika42 23 21.07.25 16:29 Сейчас в теме
(8) Параллелизм, естественно, отключен. max_parallel_workers_per_gather = 0
В данном материале не стал публиковать конфиги, сейчас есть инструменты для базовой настройки.

Сборка Postgres, что я использовал, базовые расчеты делает сама.
От нас свами нужно отключить параллелизм, указать какие диски у нас и всё. Дальше я, например, смотрю через PGtune, что он мне в логах пишет. Мне этого хватило, для исследования.
min_wal_size увидел, что слишком часто операция checkpoint сбрасывает данные на диск.

Конечно, тюнить и дальше можно. Но зачем - показатели, как мне кажется, хорошие.
А если конфиг уже есть то основные настройки можно проверить здесь https://tantorlabs.ru/pgconfigurator

Но очень важно, те параметры, что у меня, вам могут не подойти. Все таки - это синтетика, хотя и максимально, насколько это возможно, приближена к реальности.
10. хакер 19.07.25 08:32 Сейчас в теме
Мое наблюдение не совсем по теме, но все же поделюсь. Где то года два назад при покупке нового сервера, произвел замер.на Win 2019 server. При параллельном запуске большого обновления конфигурации УТ 11.5.12-17 точно не помню на MSSQL 2019 и MSSQL 2022, 2019 сильно вырвался вперед, как при обновлении по db2 так и без него.По результатам до сих пор работаем на 2019 связке.Настройки у MSSQL были одинаковые, возможно для 2022 они должны были быть другими чем у 2019.
18. user1708609 21.07.25 15:10 Сейчас в теме
(10)
Мое наблюдение не совсем по теме, но все же поделюсь. Где то года два назад при покупке нового сервера, произвел замер.на Win 2019 server. При параллельном запуске большого обновления конфигурации УТ 11.5.12-17 точно не помню на MSSQL 2019 и MSSQL 2022, 2019 сильно вырвался вперед, как при обновлении по db2 так и без него.По результатам до сих пор работаем на 2019 связке.Настройки у MSSQL были одинаковые, возможно для 2022 они должны были быть другими чем у 2019.


Да 2019 неплох, но только устаревает уже. я заметил, что CU еще может влиять на производительность
11. user1151697 19.07.25 09:46 Сейчас в теме
Я правильно понял что тесты сравнения ms и postgre делались на абсолютно разном железе) о какой выборке тогда вообще речь, странное сравнение
13. Segate 281 19.07.25 18:58 Сейчас в теме
(11) я так понял, что гипервизор один и тот-же, и вм просто на нем нарезались... Не?
19. user1708609 21.07.25 15:13 Сейчас в теме
(13) наскольк я вижу , что и на вм, и на железе, без виртуализации
21. Metrika42 23 21.07.25 16:31 Сейчас в теме
(13) Нарезались ВМ на двух аппаратных серверах. Дополнительно делал замеры без виртуализации. На одном сервере 1С, на втором - БД.
12. DrZombi 306 19.07.25 15:20 Сейчас в теме
Всё это хорошо, вот только некоторые запросы на SQL, не работают на постри
Вот и всё отличие.

А если в своей конфигурации, это некоторое вы использовали на 99%... то сами понимаете.
На постри ваша база сдохнет, покуда вы её не перепишите :))))
16. palsergeich 21.07.25 00:24 Сейчас в теме
(12)

12. DrZombi 306 19.07.25 15:20
Всё это хорошо, вот только некоторые запросы на SQL, не работают на постри
Вот и всё отличие.

А если в своей конфигурации, это некоторое вы использовали на 99%... то сами понимаете.
На постри ваша база сдохнет, покуда вы её не перепишите :))))

Сейчас все же надо признать в ПГ все сильно лучше, лет 7 назад был ад и израиль прям в типовых)
Но да готовым к тому что часть функционала начнет работать непотимально быть надо, как и к затратам на эти исправления.
Но на другой части весов то что MSSQL не прощает вечно и рано или поздно это придется и там делать
22. Venberg 02.08.25 04:14 Сейчас в теме
(12) Вот не знаю кто такие "постри" и "постгре", а вот "постгреС" (в русском произношении), с каждым релизом вбирает все больше нового. Особенно Postgres Pro интересные вещи для сборок под 1С добавляет.
Да и как-то MS SQL на Linux в новых проектах ни кто покупать сейчас не хочет. Ну и ibcmd с Linux не хочет подключаться на MS SQL.
24. DrZombi 306 02.08.25 10:31 Сейчас в теме
(22) Вас грамматика только волнует или то, что функционал на посги (недоделанном продукте, который тот же импортный, и убогий, если сравнивать с тем же MS SQL)
Так вот, насчет покупок, если будут предложения, то купят.
Сейчас идет носильное импортозамещение, т.е. компании заставляют. Не вдаваясь, а сколько это будет стоить в конечном счете компании, а в итоге тем же потребителям. Обычным гражданам.


Так вот "посги" (PostgreSQL) очень отстаёт от MS-SQL по производительности. Как-то так. И от разработчиков 1С уже требует оптимизации их Нетленок, сори с их гуанокодом, который писан на скорую, в виду экономии времени и средств заказчика. А порой просто кодер не понимает, как сделать по другому, бывает, все мы учимся. :)
26. Venberg 02.08.25 14:38 Сейчас в теме
(24) "Смешались в кучу кони,люди..."
Если вы про заказчиков с Windows XP/7 и доделками "формочек" в "нетленках" на 1С 7.7/8.2, то причем тут PostgreSQL последних версий? Они вместе и не заработают.
Если "экономный" исполнитель пытается заказчику "протолкнуть" MSSQL 2022, Windows Server 2022, что бы туда из своих "нетленок" скопипастить код 1С, то горе тому заказчику.
Только недавно чинили такой "сюрприз" от "экономного" исполнителя. Он, "альтернативно одаренный", значения из справочников в самописном цикле сравнивал, вместо запроса к SQL. Т.к. этот код он 10 лет использовал в своих файловых базах. Тормозило все даже на MS SQL. Ну и когда озвучили заказчику цену за правильное лицензирование продуктов MS, то все было переведено на Linux.
Я не знаю ваш опыт работы с Linux, но сборку "мира" из исходников я использовал только в Gentoo и FreeBSD лет 15 назад. Вот только Gentoo и FreeBSD не видел как платформу для 1С.
Если вы про самостоятельную сборку из исходников PostgreSQL для 1С, то ее можно и не делать самостоятельно. Готовые пакеты есть на сайте 1С. Но конечно для этого нужна подписка ИТС. Альтернативно можно использовать сборки от Postgres Pro для 1С. Они доступны без подписки.
25. DrZombi 306 02.08.25 10:36 Сейчас в теме
(22)
Linux

И Linux тоже импортный, он не российский. Если чего, большая часть библиотек берется с иностранных серверов, если чего.
Ведь линукс дистрибутивы так то компилируются на конкретном железе, при установке.
27. Venberg 02.08.25 14:42 Сейчас в теме
(25) Про Linux описал выше. Компилировал из исходников только Gentoo и FreeBSD лет 15 назад.
Все актуальные Linux платформы для 1С ставим только готовыми пакетами deb/rpm желательно из родных репозиториев.
Оставьте свое сообщение