Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2

03.10.23

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

Проработав 15 лет с MSSQL в 2017 начал активно СУБД Postgres SQL. За два года успел поработать в 9 версии Postgres и в 10-ой. И пришел к выводу, что существуют реальное замедление работы баз после перехода на Postgres. Недавно вышла 11 версия Postgres Pro Enterpise, которая обещает почти 2-х кратное ускорение над 11 Pro Standart и 10-ой версией. Закупив лицензию Postgres 11 Pro Enterpise Это я и решил проверить на 1С.

Скачать исходный код

Наименование Файл Версия Размер
Файл настроек 11 при котором все тормозит (Стандартные по умолчанию) postgresql.conf
.conf 24,29Kb
14
.conf 24,29Kb 14 Скачать
Файл настроек Postgres SQL 10-11 при котором все работает быстро (под сервер 16-32 RAM)postgresql.conf
.conf 23,18Kb
64
.conf 23,18Kb 64 Скачать

В качестве теста решил использовать:

  1. Тест 1 - знаменитый всем тест Гилева
  2. Тест 2 - загрузка базы данных из dt файла. база - 1C Бухгалтерия предприятия 3.0 (3.0.72.70).  Критерий оценки время на удаление
  3. Тест 3  - Обработка по поиску и удалению данных по одной организации в 1C Бухгалтерия предприятия 3.0 (3.0.72.70) (база данных плюс минус на 15 гигабайт). Критерий оценки время на удаление
  4. тест 4. Перепроведение всех Документов базы с начала. 1C Бухгалтерия предприятия 3.0 (3.0.72.70). Критерий оценки Время на проведение
  5. тест 5 - тест fragster.ru 

По моим наблюдениям, несомненным плюсом Postgres является тот факт, что Postgres более оптимально использует ресурсы (Память, CPU, накопитель)

Поэтому я умышленно установил лишь 8Gb памяти для того чтобы дать фору Postgres

В Качестве подопытного ПК Будем использовать машину, о которой я писал в статье //infostart.ru/public/992238

Характеристики подопытного ПК: 

  1.  Intel Xeon E3 1270 3,4 ГГц LGA1155 8 MB 4 ядра Процессор процессор E3-1270 SR00N (полный серверный аналог i7 2600K без встройки gpu) В разгоне 3,8Ghz 
  2.  8G RAM 1333Mhz,
  3.  SSD samsung 860 pro 250gb, 
  4.  Видеокарта -  6970 2 gb GPU с выходом mini DP
  5. Добротный блок питания 850Ватт Corsair HX850i
  6. 1C Сервер предприятия x64 v8.3.12.1790
  7. 1C клиент x64 v8.3.12.1790
  8. ОСь Windows 2012 Server R2

Итак, начнем тесты:

 

1. Первый тест - тест Гилева:

Результаты по Postgres 11

 

Результаты по MSSQL 14

Результаты теста Гилева:

  1. в пользу MSSQL 14 в одно-поточном режиме 29 попугаев MSSQL  против 23 Postgres. 
  2. 188Mb/сек в пользу Postgres против 140Mb/сек MSSQL в много-поточном режиме без опции SNAPSHOT_ISOLATION ON

Важное замечание. Если MSSQL перевести в режим SNAPSHOT_ISOLATION ON (Изоляция снимков, версионирование) - то MSSQL начинает хранить снимки баз до транзакции в памяти и дико выедает всю доступную оперативную память, отказываясь использовать файл подкачки.

Для этого снимаем конфигурацию Гилева с поддержки и снимаем режим совместимости, так как изоляция снимков работает только начиная с 11-12 платформы. После чего выполняем скрипт на базе.

 

 

В результате тест Гилева в много-поточном режиме вываливается с ошибкой из за нехватки памяти ОЗУ(RAM) 

   

 

  

Если увеличить память машины до 16-32GB в режиме SNAPSHOT_ISOLATION ON Postgres  так же обходит MSSQL .

Так что первый тест за Postgres

 

Тест 2: загрузка базы данных из dt файла.

Время на загрузку базы из *.dt файла

  • MSSQL  1 минута 49 секунд  
  • Postgres - 2 минуты 20 секунд

Второй тест в копилку MSSQL  Server 

 

Тест 3: Обработка по поиску и удалению данных по одной организации в 1С Бухгалтерия 3.0 (база данных плюс минус на 15 гигабайт).

Обработка находится тут //infostart.ru/public/1013709

Результаты отладки по MSSQL:

Результат MSSQL - 6422 секунды или почти 2 часа.

Результат Postgres - 61756 секунды или 17 с лишним часов 

                            

Итого MSSQL отрабатывает результат почти в 10 раз быстрее. Почему? Возможно в том, что Функция НайтиСсылкиНаСервере отправляет кучу мелких запросов, а MSSQL работает в режим Shared Memory, а Postgres в протоколе TCP/IP, из за чего возникает задержка между сервером предприятия 1С и СУБД. В связи с чем получаем дикую просадку по скорости. 

Для Posgres Shared Memory так же настраивал, но увы скорости не прибавилось, так как этот параметр отвечает за совсем другую функциональность и не влияет на протокол обмена. Возможно руки кривые или лыжи не едут, так что критика тут уместна.

# PostgreSQL configuration file

shared_buffers = 3GB 

Вывод - если вы используете Сервер предприятия на одной машине с MSSQL сервер - используйте протокол  Shared Memory и еще один попугай в пользу Майкрософт.

 

 

Тест 4. Перепроведение всех Документов базы. Ссылка на обработку //infostart.ru/public/1117962/

Результаты MSSQL - 58 минут 47 секунд

 

Результаты Postgres- 8 часов 39 минут 47 секунд

Почему так долго не знаю. Параметры двигал туда сюда, не помогает, все равно долго.

Любопытные могут скачать настройки Postgres за 1 инфо-шейкель в описании.

Еще один жирный попугай в пользу Майкрософт

Update  Важное дополнение: В режиме TCP MSSQL проводил документы 1 час 17 минут. Почему так тормозит Postgres SQL 11 PRO - не знаю.

Тест 5 - тест fragster.ru 

Результаты тестов:

Временные таблицы Справочники Регистры сведений Регистры накопления Регистры бухгалтерии
Тест Postgres MSSQL Разница Postgres MSSQL Разница Postgres MSSQL Разница Postgres MSSQL Разница Postgres MSSQL Разница
  13 935,27 72 885,73 58 950,46 12 561,00 12 271,91 -289,09 9 123,00 9 489,09 366,09 8 941,00 9 363,00 422,00 8 567,82 9 112,45 544,63
1 5 096,00 12 938,00 7 842,00 3 035,00 2 879,00 -156,00 2 055,00 2 221,00 166,00 2 004,00 2 247,00 243,00 1 929,00 2 137,00 208,00
2 8 282,00 28 725,00 20 443,00 6 177,00 5 920,00 -257,00 4 453,00 4 533,00 80,00 4 304,00 4 423,00 119,00 4 082,00 4 302,00 220,00
4 11 927,00 54 045,00 42 118,00 10 968,00 10 112,00 -856,00 7 923,00 7 764,00 -159,00 7 716,00 7 727,00 11,00 7 320,00 7 321,00 1,00
8 13 680,00 78 023,00 64 343,00 15 356,00 14 564,00 -792,00 11 179,00 11 356,00 177,00 10 839,00 11 135,00 296,00 10 196,00 10 804,00 608,00
16 16 691,00 78 931,00 62 240,00 14 634,00 14 418,00 -216,00 10 941,00 11 249,00 308,00 10 767,00 11 340,00 573,00 10 439,00 11 077,00 638,00
32 16 676,00 79 000,00 62 324,00 14 843,00 14 681,00 -162,00 10 842,00 11 151,00 309,00 10 637,00 11 176,00 539,00 10 186,00 10 861,00 675,00
48 16 056,00 78 930,00 62 874,00 14 782,00 14 612,00 -170,00 10 757,00 11 273,00 516,00 10 342,00 10 895,00 553,00 9 808,00 10 816,00 1 008,00
64 15 866,00 78 677,00 62 811,00 14 361,00 14 522,00 161,00 10 451,00 11 250,00 799,00 10 513,00 11 073,00 560,00 9 896,00 10 760,00 864,00
80 16 084,00 78 670,00 62 586,00 14 561,00 14 426,00 -135,00 10 103,00 11 229,00 1 126,00 10 206,00 11 034,00 828,00 10 150,00 10 727,00 577,00
96 16 520,00 78 493,00 61 973,00 14 814,00 14 426,00 -388,00 10 808,00 11 215,00 407,00 10 456,00 10 956,00 500,00 10 111,00 10 712,00 601,00
112 16 410,00 155 311,00 138 901,00 14 640,00 14 431,00 -209,00 10 841,00 11 139,00 298,00 10 567,00 10 987,00 420,00 10 129,00 10 720,00 591,00

 

По таблице видно что Postgres незначительно выигрывает в работе со справочниками, но примерно в 10 раз медленнее работает с временными таблицами. Так как в MSSQL поздних версий временные таблицы кешуруются в ОЗУ(RAM). Результаты по регистрам примерно одинаковы в обеих СУБД, с небольшим преимуществом MSSQL. Этот тест так же в копилку Мйкрософт

 

Счет 1-5 в пользу Майкрософт.

Так что 11-ый слон по прежнему медленный, но в случае возникновения блокировок - слон как всегда более проходимый чем Лошадь от Microsoft.

        

От себя: Исходя из личного опыта сделал вывод:

  1. Если железо мощное нет узких мест в ресурсах = то Лучше MSSQL
  2. Так же с переходом на  Postgres, gjxnb забыл о злощасных  мертвых блокировках от которых в MSSQL невозможно Избавиться(SNAPSHOT_ISOLATION ON отчасти решают проблему но не всегда, особенно в типовых релизах). 
  3. Так же при переходе на Postgres необходимо переписывать запросы суммирования ISNULL(значение1)+ISNULL(значение2), не то получим отчет с NULL. Соответствующей настройки "объединение со значением  NULL дает NULL off" -  в Postgres не нашел.
  4. Если ваш сервер трещит по швам, не хватает памяти или прочих ресурсов, денег на новый сервер нет - держитесь за Postgres SQL на Linux 

Update 08.09.2019 

Установил версию Postgres SQL 10.8-18.1C с сайта 1c.ru. Настройки postgres выставил те что во вложении.

Итого получил результат по тесту перепроведения документов: 

  • Время начала: 08.09.2019 20:24:04
  • Время окончания: 08.09.2019 21:49:28
  • Итого время 1 час 25 минут, что всего на пол часа больше чем MSSQL и на 7 часаов быстрее чем Postgres 11 версии (со стандартными настройками с сайта www.postgresql.org)

Чуть позже применил эти же на стройки на Postgres Pro 11 и получил результат  по тесту перепроведения документов: 

  • Время начала:      08.09.2019 22:16:55
  • Время окончания: 08.09.2019 23:38:29

1 час 22 минуты при настройках во вложении. 

PostgreSQL VS MSSQL Сервер HighLoad 1C

См. также

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

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

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

13.03.2024    3630    spyke    28    

47

Быстродействие типовой 1С

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

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

13.03.2024    5592    vasilev2015    19    

38

Анализируем SQL сервер глазами 1С-ника

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

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

1 стартмани

15.02.2024    8401    170    ZAOSTG    74    

102

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    6722    doom2good    49    

65

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    9550    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5405    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16680    skovpin_sa    14    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
96. Indgo 364 17.02.20 11:09 Сейчас в теме
(95) 13 платформа - одна из самых глючих, память выедает, тупит и тормозит
98. SlayDer_t 15.04.20 09:31 Сейчас в теме
лично мне кажется что с конторы 1С просто существует приоритет на MSSQL против PosgresSQL
MSSQL стоит бешенных бабок а PostgresSQL если кол-во пользователей не много и вовсе бесплатна
99. SlayDer_t 15.04.20 09:35 Сейчас в теме
100. SlayDer_t 15.04.20 09:53 Сейчас в теме
у меня самого стоит posgress 9.3.4-1.1(x64) + многоплатформенная конфигурация ЗГУ (13 организаций) (в организации где то 40-60 сотрудников) на core i5-7400 16Gb озу, после последнего обновления тормоза несусветные, 2-5 минут на одну операцию, даже вход в 1с у пользователей начинается от 2-х минут
101. Indgo 364 15.04.20 20:23 Сейчас в теме
(100)Настройки слона есть в приложении файл. Ставишь и все норм?
102. SlayDer_t 16.04.20 04:23 Сейчас в теме
103. SlayDer_t 16.04.20 04:25 Сейчас в теме
немного смущает размер временных файлов 1923181869 это в чем?
Прикрепленные файлы:
104. SlayDer_t 16.04.20 05:05 Сейчас в теме
postgresql.conf

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# - Memory -

shared_buffers = 4128MB # min 128kB
shared_preload_libraries = 'online_analyze, plantuner' # (change requires restart)

#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------

effective_cache_size = 12512MB

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------
# - Where to Log -
log_destination = 'stderr' # Valid values are combinations of
# This is used when logging to stderr:
logging_collector = on # Enable capturing of stderr and csvlog

# - What to Log -

log_line_prefix = '%t ' # special values:
# %t = timestamp without milliseconds
log_timezone = 'Asia/Yakutsk'

# - Locale and Formatting -

datestyle = 'iso, dmy'
timezone = 'Asia/Yakutsk'

# These settings are initialized by initdb, but they can be changed.
lc_messages = 'Russian_Russia.1251' # locale for system error message
# strings
lc_monetary = 'Russian_Russia.1251' # locale for monetary formatting
lc_numeric = 'Russian_Russia.1251' # locale for number formatting
lc_time = 'Russian_Russia.1251' # locale for time formatting

# default configuration for text search
default_text_search_config = 'pg_catalog.russian'

#------------------------------------------------------------------------------
# LOCK MANAGEMENT
#------------------------------------------------------------------------------

max_locks_per_transaction = 150 # min 10
# (change requires restart)

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

online_analyze.threshold = 50
online_analyze.scale_factor = 0.1
online_analyze.enable = off
online_analyze.verbose = off
online_analyze.min_interval = 10000
online_analyze.table_type = 'temporary'
plantuner.fix_empty_table = true


в общем так
Оставьте свое сообщение