+7 495 230 03 03 8 800 222 50 03

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

Дата публикации: 16 ноября 2015
Сравнение производительности 1С при использовании СУБД PostgreSQL и MS SQL

Затраты на СУБД MS SQL и PostgreSQL:

В связи со стремительной девальвацией рубля, покупать СУБД Microsoft SQL стало очень дорого, а для некоторых компаний стоимость этих лицензий стала совсем «неподъемной». В данный момент чтобы развернуть сервер Microsoft SQL для 20 пользователей необходимо купить такие лицензии:

  • 1 лицензия на операционную систему (WinSvrStd 2012R2 )

  • 20 лицензий на подключение к серверу (WinSvrCAL 2012)

  • 1 лицензия на сервер СУБД (SQLSvrStd 2014)

  • 20 лицензий на подключение к СУБД (SQLCAL 2014)

Ориентировочная стоимость такого пакета 275 000 руб., что для компании, в которой всего 20 человек достаточно дорого. Данных затрат можно избежать, если создать сервер СУБД на свободном ПО. Поставить операционную систему семейства Linux и бесплатную версию СУБД – PostgreSQL. На таком сервере без проблем можно развернуть сервер 1С предприятия, а также другие роли, которые потенциально могут быть совмещены c ролью баз данных, например WebServer или файловое хранилище.

Так как использовать свободное ПО очень привлекательно с финансовой точки зрения, было решено проверить, на сколько это хорошо с точки зрения производительности.

Тестирование производительности 1С:

Для выполнения теста было взято оборудование и программное обеспечение, указанное в таблице 1. Физический сервер для обоих стендов использовался один и тот же, менялось только ПО. Настройки обоих СУБД использовались по-умолчанию и в статье мы их подробно не расписываем. Дистрибутив PostGreSQL с соответсвующими патчами были взят с сайта компании 1С, версия – последняя из доступных на данном сайте.

Таблица 1. Тестовые стенды

Характеристики

Стенд №1

Стенд №2

1

Операционная система

CentOS 6

Windows Server 2012R2

2

СУБД

PostgreSQL 9.3.3

Microsoft SQL Server 2012R2

3

Центральный процессор

Intel Core i5 3330 (3.0 Ghz)

4

Оперативная память

24 GB DDD3 1333 Ghz

5

Жесткий диск

SSD 240 Gb Intel


Для начала был выполнен «тест Гилева», который показал незначительное преимущество стенда номер 2, против стенда со свободным ПО.

Результаты смотрим ниже, разница в значениях получилась всего 3%.

Для информации: «тест Гилева» – популярный синтетический тест 1С, который выполняет ряд стандартных операций – чем быстрее тест выполняется, тем выше оценка. Оценка выполняется в условных единицах. Полученную оценку можно сравнить с прилагаемой к тесту шкале, которая покажет на сколько высока производительность текущей системы.

тест субд экономия на 1с


Рисунок 1. Результат теста Гилева. Стенд №2 СУБД MS SQL

как сэкономить на 1с с помощью бесплатной субд

Рисунок 2. Результат теста Гилева. Стенд №1 СУБД PostgreSQL


Далее решено было тестирование выполнить по методике APDEX. Суть метода заключается в измерении времени выполнения основных операций в 1С, замеры проводятся несколько раз на протяжении определенно периода времени. Далее полученный результат сравнивается с приемлемым временем выполнения той или иной операции.

Для этого взяли реальную рабочую базу одной из самых тяжелых конфигураций 1С, характеристики базы указаны в таблице №2.

Таблица 2. Характеристики тестовой базы

Конфигурация

Редакция

Объем базы

Управление производственным предприятием

1.3.57.1

16,3 Гб


Замерялось время выполнения 7-ми стандартных операций с объектами в базе. Каждый тест выполнялся 10 раз и выводилось среднее значение. Замеры проводились с использованием толстого клиента через локальную сеть. Клиент устанавливался на рабочую станцию под управлением Windows 7. Тесты также пробовали запускать с клиента установленного на Ubuntu Linux, но он работал не стабильно и все тесты решено было выполнять только с клиента на Windows.

Таблица 3. Результаты APDEX

Ключевая операция

Тип

Время выполнения в секундах

Отклонение

Стенд №2 (MSSQL)

Стенд №1

(Свободное ПО)

Открытие документа

Заказ клиента

0,348

0,617

77%

Проведение документов

Заказ клиента

0,399

0,568

42%

Проведение нового документа

Документ объект: Заказ клиента

0,185

0,205

11%

Сформирован отчет

Анализ доходов расходов

0,733

1,022

39%

Сформирован отчет

Ведомость по партиям товаров

4,104

4,912

20%

Сформирован отчет

Ведомость по товарам на складах

0,316

0,508

61%

Сформирован отчет

Расчеты с клиентами

0,200

0,334

67%


В среднем наша реальная база при использовании MSSQL работала на 45% быстрее, чем на стенде со свободным ПО. На некоторых тестах отрыв был очень значителен, а на таких как, например проведение нового документа составлял всего 11%.

Вывод:

  1. 1C на СУБД MSSQL работает примерно в 1,5 быстрее, чем на PostgreSQL. Соответственно, если есть возможность купить или арендовать лицензии MSSQL, лучше использовать его для более высокой производительности. Для небольших и ненагруженных баз можно попробовать использовать версию MSSQL Express. Тестов с ней мы не проводили, поэтому она может показать себя по производительности как лучше так и хуже PostgreSQL. Данная редакция ограничена использованием 1 процессора и 1 Гб ОЗУ, также не работает с базами более 10Гб. Если база дорастет до такого размера, то она остановиться и перестанет работать полностью, но как показывает практика, если в базе работает 15-20 пользователей, то комфортно можно работать при размере базы 4-5ГБ, далее база начинает сильно тормозить.

  2. Оценка «тестом Гилева» показывает крайне незначительное превосходство MSSQL, что позволяет сделать предположение о том, что другие базы 1С могут работать на PostgreSQL так же хорошо, как и на MSSQL, а возможно и быстрее. Перед выбором СУБД рекомендуем провести тесты на своей конкретной базе и сравнить полученные результаты.

  3. Использование СУБД PostgreSQL для развертывания на нем 1С является приемлемым решением в условиях ограниченного бюджета. База будет работать не так быстро как на MSSQL, но зато не нужно платить за лицензии.

В конце 2017 года мы провели новые тесты и опубликовали их в очередной статье.

Ещё одним способом сэкономить при использовании 1С является решение – взять сервер 1С в аренду.

Лого ES мини

EFSOL

  • https://plus.google.com/117584068553027532625 Дмитрий Васильев

    Можете поделиться настройками PostgreSQL?

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      Дистрибутив PostGreSQL с соответсвующими патчами были взят с сайта компании 1С, версия – последняя из доступных на данном сайте.

      • Аноним

        Брать нужно где положено, а не где попало
        https://www.postgresql.org/download/windows/
        Более того понимать что , зачем и для чего.
        PostgreSQL На отдельной линукс машине будет гарантированно работать НАМНОГО быстрее чем скуль. А есть на freebsd собрать на правильной машине, и с быстрыми дисками, то переплюнет насколько это вообще можно себе фантазией представить.

        • https://plus.google.com/105560597109139378660 EFSOL. Системная интеграция. Консалтинг

          Здравствуйте!
          Мы не исключаем преимущества PostgreSQL, особенно при грамотной и детальной его настройке.

          Однако, мы говорим не просто о СУБД, а его работе в бизнес-приложении 1С. В котором, наряду с производительностью, еще важны стабильность, универсальность, полноценная поддержка компании 1С, взаимосовместимость и т.д.

          К тому же статья вышла в 2015 году. После этого было проведено еще несколько различных видов тестов, в которых PostgreSQL показывает гораздо более качественные результаты

          К примеру, https://efsol.ru/articles/1s-mssql-postgresql.html

        • Иван Дегтярёв

          Василий, вы не обладаете знаниями в области работы связки 1С + PostgreSQL. Чтобы эта связка заработала, нужен ряд патчей. Свои сборки с этими патчами делает сама 1С и команда Postgres Professioanal. Конечно вы можете собрать сами используя эти патчи. Версия с https://www.postgresql.org/download/windows/ не заработает с 1С.

  • Сергей Соколов

    Настройки PostgreSQL из коробки от самого 1C годятся лишь для маленькой базы и одним пользователем, работающим с ней.

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      Согласен что для работы 1С СУБД, как и сервер в целом нужно настраивать дополнительно. В данном тесте сравнивали СУБД с настройками по дефолту обоих.
      В продакшн среде применяется ряд дополнительных настроек начиная от аппаратных (настройки БИОС, видеоадаптера, сетевой карты) и заканчивая настройками самой СУБД такми как отключение паралелелизма и т.д.

      • https://www.facebook.com/app_scoped_user_id/10208133451444164/ Alexey Fadeev

        Так напишите это в выводе. А то получается необъективно: Вы ЗНАЕТЕ, что в продакшне нужно конфигурировать, но заранее советуете покупать MS SQL на основе тестов дефолтного конфига.
        Специалисты сказали, что Postgres в составе 1С сконфигурирован так, что по умолчанию используются блокировки на уровне таблицы, тогда как для MS SQL – блокировки на уровне записи. Если это действительно так, то тест вообще бессмысленен.

        • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

          Информацию о СУБД добавили в абзац над таблицей 1.
          Касательно блокировок. Происходит блокировка на уровне таблиц или записей зависит от настроек конфигурации 1С а не СУБД.
          Если режим блокировок транзакций установлен автоматический – то действительно PG и Oracle DB блокирует информацию на уровне таблиц а MSSQL и DB2 на уровне записей.
          Если же режим управляемый – то и PG и MSSQL блокируют информацию на уровне записей. Вопрос блокировок актуален для работы в реальных условиях, когда несколько пользователей генерируют запросы на запись к одной и той же таблице. Оба теста, которые мы выполнили не создают такой ситуации, по-этому в данном случаи не важно на каком уровне проходит блокировка данных

  • http://vk.com/id467508 Иван Исаченко

    как можно советовать ставить SQL Express не проведя тесты с ней????

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      Согласен, тесты с SQL Express не проводились и возможно эта версия MSSQL будет работать медленнее чем PG. Вывод скорректировали.

  • http://slysha.livejournal.com/ slysha

    Конфиг-то постгреса гиде? Почему взята не последняя версия?

  • https://plus.google.com/112362673865944422333 Nikolay StartupTurbo

    Постгрес — он разный бывает. Какой был в этом случае? Какие параметры? Что это вообще было, где подробности?
    shared_buffers хотя бы выставили в соответствии с имеющимися ресурсами?

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      К сожалению, настроек предоставить не можем в данный момент, поскольку тестирование было около года назад и данного стенда уже нет.

      • https://plus.google.com/112362673865944422333 Nikolay StartupTurbo

        Замечательно. Напишите об этом в статье, чтобы не вводить людей в заблуждение.

        • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

          Добавили информацию в абзац над таблицей 1.

  • https://www.facebook.com/app_scoped_user_id/531848893648856/ Alexey Novikov

    Версия 9.3.3 не знаю , но у нас обратный результат на 9.4 ,номенклатура большая , сама база не очень 20 гб, на MS SQL2005 1с Бухгалтерия за ночь не могла например закрыть месяц, на PG 4 часа

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      Интересный результат.А можете сказать на каких конкретно операциях было наиболее явно видно что PG работает быстрее чем на MSSQL?
      Во время наших тестов разрыв между результатами PG и MSSQL в разных тестах сильно отличался, но PG всегда отставал.

      • https://www.facebook.com/app_scoped_user_id/531848893648856/ Alexey Novikov

        Мы только начинаем изучать возможность перехода, есть регламентная процедура закрытие месяца на уровне в Бухгалтерии ,которая нас очень волнует.По операционно в каком месте именно на проведении или запросах не могу сказать пока . Но MSSQL вис на запросах по 20 счету(номенклатура большая)… Поэтому предполагаю, что на больших данных видимо PG оптимальнее…Очень важно это именно 9.4 и 8.3, пртив 8.3 и mssql 2005 более ранние версии pg и 1с(старые) пробовали раньше тестить так же результат был не в пользу PG…

        • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

          Ваш опыт говорит о том, что PG в отдельных случаях в “боевых” условиях показывает большую производительность чем MSSQL.По-этому перед выбором СУБД нужно протестировать их обе, а далее уже решать – использовать бесплатный софт или же потратится на SQL.
          Мы в тестах показали, что скажем замер производительности тестом Гилева практически не отличается, а вот APDEX показал очень большую разницу в отдельных тестах.
          Соответственно могут быть случаи когда PG покажет себя лучше. В Вашем случаи было бы интересно понять дело в версии PG или просто в данной конкретной базе.

          • https://www.facebook.com/app_scoped_user_id/531848893648856/ Alexey Novikov

            Жаль , что этих выводов нет в статье, однобоко получилось. 3ий пункт нужно заменить на вашу последнюю фразу и будет более справедливо, хотя и первый утверждает разницу в 1,5 раза…

          • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

            Алексей, спасибо за Ваш комментарий, информация добавлена во 2-й вывод.

  • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

    1) Версия PostgreSQL взята последняя, которая была на момент тестирования на сайте 1С .
    2) Настройки использовались стандартные без каких либо изменений.

    • https://www.facebook.com/app_scoped_user_id/988170164589750/ Alexey Lesovsky

      Дефолтная конфигурация PostgreSQL расчитана так чтобы PG смог запуститься на самом древнем утюге, отсюда и низкие результаты.

      • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

        Бесспорно, грамотная настройка PG увеличивает производительность, впрочем это применимо точно также и к MSSQL. В нашем тесте обе СУБД были настроены по дефолту.

        • https://www.facebook.com/app_scoped_user_id/1066512950075237/ Denis Butov

          Спорное утверждение в данном контексте. Изменение дефолтных настроек pgsql даже в однопользовательском режиме работы, приведет к значительному увеличению производительности. Для MS SQL получить значительное увеличение производительности в данной ситуации не получится.

          • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

            Сложно сказать насколько станет лучше работать PG если его настроить. Все таки взят не простой PG, а дистрибутив с сайта 1С с соответствующими патчами для оптимизации работы с 1С.
            По возможности сделаем сравнение производительности полностью настроенного MS SQL и полностью настроенного PG, и посмотрим насколько реально настройка влияет на производительность обеих СУБД.

          • https://www.facebook.com/app_scoped_user_id/1066512950075237/ Denis Butov

            Еще лучшей идеей было бы взять Postgres тут http://www.postgrespro.ru/products/download
            Дефолтная настройка Postgres подразумевает минимум использования памяти. Дефолтная настройка MS SQL подразумевает, что будет использована вся доступная память. Именно по этой причине ваш тест совершенно бесполезен, на мой взгляд. Независимо от настроек, MS SQL будет все равно быстрее в большинстве ситуаций, однако разница не будет столь большой, как в приведенном тесте. Это связано в первую очередь с позицией разработчиков 1С.

  • https://plus.google.com/102265277162841053151 Oleg Smirnov

    А что насчёт сравнения многопользовательского режима работы? Блокировочный механизм работает одинаково?

    • https://www.facebook.com/app_scoped_user_id/1514602548838777/ Лев Корольков

      Как я уже сказал, проводили только тесты на производительность (Тест Гилева и APDEX).
      Как будет происходить работа в многопользовательском режиме не сравнивали.
      Согласен, что интересно было бы это проверить. при чем на разном количестве пользователей (5,10,30,50,100).
      Думаю, проведем такой тест в следующий раз.

  • IT 168

    “Бесспорно, грамотная настройка PG увеличивает производительность, впрочем это применимо точно также и к MSSQL. ”
    по дефолту в PG всего 128 мегабайт разделенной памяти, в этот параметр вообще маленький. не удивительно что PG дал такой плохой результат

    • https://efsol.ru/ EFSOL

      По поводу настроек Postgre. Да, скорее всего при выделении большего количества памяти он показал бы результат повыше, но мы использовали конфиги по умолчанию как на MSSQL так и на PostGre. Если будем проводить еще раз похожее тестирование – будем выполнять оптимизацию настроек обоих СУБД.

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

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

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