Компания 1С выделяет в своей технологической платформе отдельный раздел "Различные хранилища данных", под ними она подразумевает Системы управления базами данных (СУБД). Очень часто клиентов волнует вопрос, насколько эффективны различные СУБД, в чём различия файловой СУБД фирмы 1С и бесплатной PostgreSQL по сравнению с признанным лидером MS SQL (вопросы эффективности работы, поддерживаемых фирмой 1С, СУБД DB2 и Oracle Database оставим за рамкой данной статьи).Для тестирования мы использовали виртуальную машину созданную в системе виртуализации XenServer 7, на сервере с процессором Xeon E5-1650v2, дисковая система состоит из RAID5 собранном на 8хSSD Intel S3610, скорость линейного чтения такого массива около 2 ГБайт/сек.Было использовано три конфигурации:
- 2 core/4Gb RAM/40 Gb disk;
- 6 core/16Gb RAM/40 Gb disk;
- 12 core/16Gb RAM/40 Gb disk.
Операционная система Windows 10 Pro. Платформы использовались 8.3.7, она была изначально установлена в виртуальной машине и 8.3.13, которая требуется для возможности использования нововведений в PostgreSQL 10.5 и выше. Для каждого опыта мы разворачивали виртуальную машину из snapshot, чтобы не нарушать чистоту эксперимента. Будем использовать:
- файловую версию хранилища;
- MSSQL Express 2017; MSSQL 2017 Developer;
- оптимизированные для 1С СУБД PostgreSQL 9.6 и 10.5 с диска 1С:ИТС;
- оптимизированные для 1С СУБД Postgres Pro 10.5 и 11.1 скачанные и с их сайта.
Тесты будем проводить с помощью Нагрузочного теста TPC-1C или как в народе говорят проще “Тест Гилёва”.
Надо отметить, что Windows в этой виртуальной машине практически не настроен, так что с помощью настроек и оптимизаций можно было выжать еще немного скорости сверху, это надо учитывать в этом тесте и всех последующих. Хочу отметить, что на платформе 8.3.7, после увеличения ресурсов виртуальной машины результат теста был примерно 53 балла (скриншот этого теста куда-то затерялся), а с переходом на 8.3.13 почему-то результаты упали. Продолжим с MS SQL Express 2017:
Посмотрим как себя поведет версия Developer, которую Microsoft теперь раздает свободно с ограничениями на использование в коммерческих продуктах.
Очень отчетливо видно, как происходит падение результатов тестов по мере перехода от одной СУБД к другой. При переходе от файловой базы к MS SQL мы сразу теряем почти половину производительности. То же самое происходит при переходе от MS SQL к бесплатной PostgreSQL.Интересный факт, несмотря на то, что скорость одного потока на PostgreSQL ниже, чем результаты показываемые MSSQL, максимальная скорость записи и ориентировочное количество пользователей, которые смогу комфортно работать с данной конфигурацией для PostgreSQL заметно выше(168 пользователей и 300 Мб/сек), чем у СУБД от Microsoft (77 пользователей и 240 Мб/сек).Еще раз отмечу, что изначально никаких оптимизаций в настройке виртуальной машины или СУБД не было, тест преследовал собой цель, сравнить насколько различается работа разных СУБД в одинаковой среде. В дальнейшем были применены рекомендации по настройке СУБД, которые предлагает фирма 1С, однако каких либо видимых результатов на результаты тестов они не оказывали. В дальнейшем попробую Windows 10, протестировать варианты с настройками и без на реальных рабочих базах.Следует отметить, что версия 10.5 PostgreSQL показала себя с худшей стороны с оптимизацией как команды 1С, так и команды PostgrePro. По результатам 9.6 и 11.1 в принципе схожи (если не учитывать, что в принципе разница результатов всех версий PostgreSQL укладывается в статистическую погрешность и возможной степени влияние среды виртуализации на результат). Что использовать для работы? Пока фирма 1С не задокументировала возможность работы с 11 версией СУБД, очевидно придется придерживаться старой версии 9.6.Итак, к каким же выводам мы можем прийти по результатам тестов. Если у вас небольшая база и маленькое количество пользователей используйте файловый вариант базы данных, это даст вам максимальную производительность. Если размер базы все еще не велик, для версии MS SQL Express 2017 до 10 Гб (нужно держать в голове, что у Express версии еще достаточно серьезные ограничение на использование оперативной памяти), а количество пользователей уже велико и задержки при блокировке таблиц будут существенными, то используйте бесплатную версию MS SQL. Если покупать коммерческую версию MS SQL нет желания или возможности, остается переходить на PostgreSQL, к сожалению результаты тестов показывают катастрофическое падение скорости работы. Но надо понимать, что это именно падение результатов в тесте, а не реальной производительности, мы постараемся проверить данные конфигурации на реальных базах.
Есть еще вот такой тест http://fragster.ru/perfomanceTest/results.php, он дает немного более развернутые и понятные результаты, если приглядеться, то результаты для MS SQL и PostgreSQL различаются только тестом “Временные таблицы”. В остальном на одинаковом железе показывает сходные результаты.
http://fragster.ru/perfomanceTest/result.php?guid=86f045c3-4509-11e9-bbfb-e6265896d204
Вот результат MS SQL, с настройками СУБД рекомендуемыми для 1С. Дальше идет тест PostgreSQL в той же виртуалке.
http://fragster.ru/perfomanceTest/result.php?guid=a5ef803e-4103-11e9-bbf7-e6265896d204
Видно, что результаты PostgreSQL в общей массе даже выше, чем у MSSQL, но в разделе “Временные таблицы”, преимущество MSSQL просто подавляющее. Если проанализировать другие результаты в таблице, то можно заметить, что удается получить приличные результаты для PostgreSQL, но только под Linux.
Наши специалисты помогут подобрать для вас оптимальную конфигурацию сервера для 1С. Обращайтесь info@coints.ru.