Каталог решений - Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2

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

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

В наличии

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

Категория:

Описание

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

  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

В Качестве подопытного ПК Будем использовать машину, о которой я писал в статье //sale.itcity.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 гигабайт).

Обработка находится тут //sale.itcity.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. Перепроведение всех Документов базы. Ссылка на обработку //sale.itcity.ru/public/1117962/

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

 

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

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

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

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

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

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

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

Временные таблицыСправочникиРегистры сведенийРегистры накопленияРегистры бухгалтерии
ТестPostgresMSSQLРазницаPostgresMSSQLРазницаPostgresMSSQLРазницаPostgresMSSQLРазницаPostgresMSSQLРазница
 13 935,2772 885,7358 950,4612 561,0012 271,91-289,099 123,009 489,09366,098 941,009 363,00422,008 567,829 112,45544,63
15 096,0012 938,007 842,003 035,002 879,00-156,002 055,002 221,00166,002 004,002 247,00243,001 929,002 137,00208,00
28 282,0028 725,0020 443,006 177,005 920,00-257,004 453,004 533,0080,004 304,004 423,00119,004 082,004 302,00220,00
411 927,0054 045,0042 118,0010 968,0010 112,00-856,007 923,007 764,00-159,007 716,007 727,0011,007 320,007 321,001,00
813 680,0078 023,0064 343,0015 356,0014 564,00-792,0011 179,0011 356,00177,0010 839,0011 135,00296,0010 196,0010 804,00608,00
1616 691,0078 931,0062 240,0014 634,0014 418,00-216,0010 941,0011 249,00308,0010 767,0011 340,00573,0010 439,0011 077,00638,00
3216 676,0079 000,0062 324,0014 843,0014 681,00-162,0010 842,0011 151,00309,0010 637,0011 176,00539,0010 186,0010 861,00675,00
4816 056,0078 930,0062 874,0014 782,0014 612,00-170,0010 757,0011 273,00516,0010 342,0010 895,00553,009 808,0010 816,001 008,00
6415 866,0078 677,0062 811,0014 361,0014 522,00161,0010 451,0011 250,00799,0010 513,0011 073,00560,009 896,0010 760,00864,00
8016 084,0078 670,0062 586,0014 561,0014 426,00-135,0010 103,0011 229,001 126,0010 206,0011 034,00828,0010 150,0010 727,00577,00
9616 520,0078 493,0061 973,0014 814,0014 426,00-388,0010 808,0011 215,00407,0010 456,0010 956,00500,0010 111,0010 712,00601,00
11216 410,00155 311,00138 901,0014 640,0014 431,00-209,0010 841,0011 139,00298,0010 567,0010 987,00420,0010 129,0010 720,00591,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 минуты при настройках во вложении. 

#ВсемДобр@иБабл@

has been added to your cart:
Оформление заказа