Тестируем PostgreSQL и 1С 8.х
Много слов сказано в защиту проприетарного программного обеспечения, но в условиях кризиса и дорого доллара, казалось бы, давно согласованные решения приобретают новый смысл. Старый вопрос, какую базу данных использовать в крайне распространенной 1С, даже с учетом его большой цены, всегда склонялся в пользу MS SQL. Сейчас рост цен делает продукты Microsoft нерентабельными, нужно искать альтернативные варианты.
На сайте компании 1С кроме MS SQL рекомендуется, как вариант, использовать бесплатный PostgreSQL. Сотрудники 1С проводят тестирование последних релизов и предлагают свои патчи для повышения производительности и исправления известных багов. Почему же все не перешли на использование бесплатного SQL сервера?
Бытует мнение, что производительность PostgreSQL ниже, чем у MS SQL. Мы решили проверить на примере собственных баз и провести тестирование. База по современным меркам была выбрана небольшая, порядка 11 гб, операция – перепроведение всех документов. В среднем операция выполнялась в течение двух часов. Общий вывод, да PostgreSQL медленней, чем MS SQL, но всего на 10-20 %. Тестирование проводилось с разным оборудованием, объемом памяти, но практически всегда разница оставалась не существенной.
Какие еще результаты были получены при тестировании. Не понятным осталось, что является узким звеном память, процессор или диск. Все ресурсы были недогружены, не меняло ситуацию тестирование на реальном железе и на виртуальной машине. По словам очевидцев (с интернета), такая ситуация вызвана неоптимальностью запросов в 1С, которые теряют производительность между сервером приложений 1С и сервером SQL. Выходов два: переписать запросы или брать просто более быстрой процессор. При этом количество ядер не улучшает результат, только скорость процессора.
Конечно, нельзя сказать, что всем нужно срочно переходить на PostgreSQL. С точки зрения администрирования, масштабирования MS SQL гораздо удобней. Если у вас не большая организация до 200 машин, вы можете сэкономить на базе данных и использовать PostgreSQL. Однако в дополнение вы получите некоторые глюки и зависания, переполнения памяти и прочие админские прелести. Можно просто перезапускать службу базы данных ночью каждый день.
Еще разгрузить базу и сервер 1С можно, если не использовать терминальную конфигурацию. С точки зрения администрирования терминалы удобны, но за их лицензирование надо платить, плюс нужен мощный терминальный сервер. Не используются мощности локальных машин, простаивает сеть. При грамотном написании ПО на 1С можно нагрузку переместить на сторону локальной машины пользователя, при этом загрузится сеть, но с учетом скорости в 1 гбит такая загрузка не существенна. Общий эффект будет заметен сразу, нагрузка на сервера и базу 1С станет равномерной, пользователи гарантированно смогут генерировать отчеты.
Основной вывод статьи в том, что накачивание железом и софтом 1С платформы дело неблагодарное и бесполезное. Для небольших баз можно обойтись бесплатным ПО, для масштабных – в любом случае вам придется оптимизировать запросы к SQL серверу.