В качестве теста решил использовать:
- Тест 1 - знаменитый всем тест Гилева
- Тест 2 - загрузка базы данных из dt файла. база - 1C Бухгалтерия предприятия 3.0 (3.0.72.70). Критерий оценки время на удаление
- Тест 3 - Обработка по поиску и удалению данных по одной организации в 1C Бухгалтерия предприятия 3.0 (3.0.72.70) (база данных плюс минус на 15 гигабайт). Критерий оценки время на удаление
- тест 4. Перепроведение всех Документов базы с начала. 1C Бухгалтерия предприятия 3.0 (3.0.72.70). Критерий оценки Время на проведение
- тест 5 - тест fragster.ru
По моим наблюдениям, несомненным плюсом Postgres является тот факт, что Postgres более оптимально использует ресурсы (Память, CPU, накопитель)
Поэтому я умышленно установил лишь 8Gb памяти для того чтобы дать фору Postgres
В Качестве подопытного ПК Будем использовать машину, о которой я писал в статье //infostart.ru/public/992238
Характеристики подопытного ПК:
- Intel Xeon E3 1270 3,4 ГГц LGA1155 8 MB 4 ядра Процессор процессор E3-1270 SR00N (полный серверный аналог i7 2600K без встройки gpu) В разгоне 3,8Ghz
- 8G RAM 1333Mhz,
- SSD samsung 860 pro 250gb,
- Видеокарта - 6970 2 gb GPU с выходом mini DP
- Добротный блок питания 850Ватт Corsair HX850i
- 1C Сервер предприятия x64 v8.3.12.1790
- 1C клиент x64 v8.3.12.1790
- ОСь Windows 2012 Server R2
Итак, начнем тесты:
1. Первый тест - тест Гилева:
Результаты по Postgres 11
Результаты по MSSQL 14
Результаты теста Гилева:
- в пользу MSSQL 14 в одно-поточном режиме 29 попугаев MSSQL против 23 Postgres.
- 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.
От себя: Исходя из личного опыта сделал вывод:
- Если железо мощное нет узких мест в ресурсах = то Лучше MSSQL
- Так же с переходом на Postgres, gjxnb забыл о злощасных мертвых блокировках от которых в MSSQL невозможно Избавиться(SNAPSHOT_ISOLATION ON отчасти решают проблему но не всегда, особенно в типовых релизах).
- Так же при переходе на Postgres необходимо переписывать запросы суммирования ISNULL(значение1)+ISNULL(значение2), не то получим отчет с NULL. Соответствующей настройки "объединение со значением NULL дает NULL off" - в Postgres не нашел.
- Если ваш сервер трещит по швам, не хватает памяти или прочих ресурсов, денег на новый сервер нет - держитесь за 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 минуты при настройках во вложении.