В данной статье я хочу привести сравнение скорости работы 1С: Предприятие 8.3 при использовании разных СУБД.
На написание этой статьи меня вдохновила отличная статья Немного о конфигурировании PostgreSQL и 1С Батл: PostgreSQL 9,10 vs MS SQL 2016.
Данная статья - это некая попытка собрать все данные и понять, что можно использовать в частных случаях систем с небольшой нагрузкой, с точки зрения количества пользователей. В частности в области ретейла.
Вступление
31.01.2019 года компания 1С выпустила долгожданный релиз платформы 8.3.14.1565.
В новой версии 1С предоставлены новые механизмы, которые обещают повысить удобство, скорость и надежность работы в среде 1С. Описывать их не буду. В сети много информации, которая позволит ознакомиться с ними.
Но возникает закономерный вопрос - какова скорость работы платформы, при использовании различных СУБД и различном расположении сервера 1С?
Я не буду сравнивать разные версии самих платформ 1С. Я хочу получить информацию как ведет себя платформа 8.3.14 при работе с MS SQL и с PostgreSQL. Как ведет себя 1С при работе на Windows или на Linux системах? В каком случае есть смысл остаться на файловых базах, а когда таки надо брать серверные, и какой прирост или падение производительности будет в этом случае.
В своей работе я довольно часто сталкиваюсь одними и теми же вопросом. Какое программное обеспечение необходимо использовать в работе баз данных 1С? Что нужно для полноценной работы, например магазина retail? А если это несколько магазинов, то какой вариант ПО необходим в этом случае? Какой минимальный набор оборудования необходим? Что лучше: платный софт или же можно использовать бесплатный?
Попробую рассмотреть некоторые вопросы на примерах в этой статье.
Выбор софта для работы
На сегодняшний день практически все, кто работает в среде 1С, так или иначе сталкиваются с вопросом "а какое оборудование нам надо?", "какие требования по железу необходимы?" и по сути - все вопросы крутятся вокруг одного слова - бюджет.
Если мы говорим про отдельно взятый магазин, где будет находится локальная база (РИБ, например), и все торговые операции будут совершатся на "кассе", то наличия одного компьютера думаю вполне хватит, вот только какую ОС на него ставить? Какой софт использовать?
И с какого количества касс есть смысл ставить уже отдельный сервер в магазине, ну и какие плюсы/минусы такого решения.
И такие вопросы появляются изо дня в день.
Я не буду рассматривать цены на сборку и покупку компьютеров, серверов и любого другого железа. Меня больше интересует вопрос об используемом на нём программного обеспечения. Так как заведомо, если есть бюджет, который обычно выделяется на рабочее место, то у нас два варианта - взять мощнее оборудование и взять бесплатный софт, или купить платный софт, но остаться на том что есть, или купить новое, но хуже.
Посмотреть какие системные требования к операционной системе для работы 1С можно здесь. Из всего списка, нас интересуют Windows и Linux. Так как MacOS на кассах мы не видели. Хотя, сейчас на кассах начинают появляться устройства на базе ОС Android и iOS.
Следующий этап, это приобретение лицензии 1С. Перечень продуктов и цен на них можно посмотреть здесь
Если речь идет об использовании файловой базы, то достаточно будет приобрести необходимый программный продукт, например 1С:Розница 8 ПРОФ, который в себя включает лицензию на конфигурацию и одного пользователя. При одновременном подключении более одного пользователя необходимо будет также докупить нужное количество клиентских лицензий, например 1С 8 ПРОФ. Клиентская лицензия на 5 рабочих мест.
Если необходим клиент-серверный вариант работы базы данных, то для этого приобретаются другие лицензии. Однозначно необходима лицензия на сам программный продукт, например 1С:Розница 8 ПРОФ, а также лицензия на сервер 1С, например 1С 8.3 ПРОФ. Лицензия на сервер (x86 и/или x64), и необходимое количество клиентских лицензий для работы пользователей в базе.
Сразу возникает вопрос: Если выбран клиент-серверный вариант, то база 1С будет расположена в какой-нибудь СУБД. В какой?
На текущий момент 1С может работать с 4 СУБД: Microsoft SQL Server, PostgreSQL, IBM DB2 и Oracle Database.
Исторически сложилось, что 1С давно и хорошо работает с СУБД Microsoft SQL Server.
MS SQL является коммерческим продуктом и стоит денег. Последняя версия MS SQL на текущий момент - 2017. Существуют несколько редакций продукта, которые имеют свои возможности и ограничения, следовательно и разную стоимость. Есть и функционально ограниченная бесплатная версия.
Однако хочу отметить, что выбрав в качестве СУБД MS SQL, устанавливать её нужно будет на ОС семейства Windows, т.к 1С, пока, не работает с MS SQL, которая установлена на Linux системах, при чем в независимости от того - на какой ОС расположен сервер 1С.
Следующий вопрос: какую ОС Windows необходимо приобретать? Если мы говорим о количестве пользователей, работающих удаленно (RDP), больше одного, тогда Windows 10 не подходит для этих целей. Выбор очевиден - ОС Windows Server. С другой стороны, с развитием тонких клиентов - люди все реже и реже подключаются по RDP, а выбирают работу через тонкий клиент по вебу.
На текущий момент компания Microsoft выпустила ОС Windows Server 2019. Есть хорошая статья, которая описывает условия лицензирования этой ОС.
Альтернативный вариант использования файловой базы или клиент-серверной - это использовать ОС семейства Linux.
Сегодня 1С хорошо работает в Linux системах, стабильно. Сама по себе ОС является бесплатной, что позволяет значительно экономить бюджетные средства.
При клиент-серверном варианте работы, можно также использовать СУБД PostgreSQL, которая является бесплатной для использования. Более того, PostgreSQL может работать как на Linux системе, так и на Windows ОС в паре с сервером 1С.
Таким образом можно также значительно сэкономить бюджетные средства, выбрав это ПО.
СУБД IBM DB2 и Oracle Database являются также коммерческими (условно-бесплатными) продуктами, которые работают с 1С: Предприятие, однако большой популярности в среде 1С не получили.
Стоит отдельно отметить наличие сборки "Мини сервер 1С", куда входит ключ 1С сервера и 5 пользовательских лицензий, что стоит дешевле, чем отдельно покупать сервер и 5 лицензий.
Хочу вернуться к вопросам, которые я задал в начале этой статьи: какое ПО лучше использовать? Платное или бесплатное? В чем разница?
Для ответа на эти вопросы я решил провести ряд тестов, которые показывают скорость работы базы 1С в разной среде.
Вкратце на счет оборудования:
Относительно выбора оборудования, на мой взгляд, важными являются следующие критерии - SSD (лучше NVMe), высокая частота процессора. Остальное - выбирается под конкретные нужды. Если этот вопрос интересен, то могу поделиться подробно своим мнением в комментариях.
Однако, нас все же интересует вопрос производительности 1С в тех или иных условиях, в зависимости от задач.
Например, есть клиент, у него 100 РИБ узлов, у него около 100 000 товаров, и более 1 000 000 характеристик и штрихкодов. И вот приходит запрос - какое оборудование купить на кассы, а какое на сервер, и есть ли смысл ставить сервер на кассы?
Сейчас в сети много тестов (в том числе Гилева), есть APDEX от 1С и т.д, но в нашем случае это все бесполезно, ибо с самой кассы уходит мало данных, операций в кассе делается не много, и самые сложные - это пробитие Чека ККМ. НО вот на саму кассу приходит огромное количество данных, особенно в межсезонье, очень много данных по сегментам скидок, по новому товару, новые штрихкода, документы перемещений и т.д.
Отсюда возникает вопрос - какая конфигурация оборудования и софта нас устроит, чтобы в течении краткого времени получить всю нужную информацию на кассе. Т.е. нас интересуют реальные цифры создания объектов в базе, проведение документов и т.д., причем именно последовательные операции, так как типовые обмены именно так и передают данные.
Сразу хочу обратить внимание, что все данные рекомендации и методы замеров основаны на задаче когда доступ в ЦБ имеют около 5 человек в 90% случаях, и только изредка, к ЦБ могут подключиться в онлайне все кассы, такое бывает в случаях, когда ночной обмен не успел пройти, срочные изменения цен/скидок, не успел выгрузиться новый товар и т.д.
Тестирование
Виды тестов
Какие тесты будут проводится и чем, собственно, тестировать?
В этой статье я использовал 2 вида тестов:
-
Нагрузочный тест TPC-1C. На этот тест я обратил внимание, потому что в нём учитываются настройки СУБД, ОС так и сама аппаратная часть стенда.
-
Некий наш внутренний нагрузочный тест, который показывает скорость выполнения разных сценариев. Например - создание справочника, проведение документа по одному регистру с разным количеством строк, удаление объектов, срезы разные и т.д.
Тестирование платформы на Windows Server 2019 + MS SQL 2017 на одной машине
В качестве стенда для тестов была создана виртуальная машина со следующими характеристиками:
CPU Intel Core i3-8100 3.6GHz
RAM 8 Gb DDR-4 3200 MHz
Samsung SSD 960 EVO NVMe M.2
Была произведена чистая установка ОС Microsoft Windows Server 2019 RTM Build 17763 Standard.
Была установлена СУБД MS SQL 2017 Developer, а также SQL Server Management Studio 17 для управления СУБД в графическом режиме.
Настройки СУБД были приведены к следующим:
Количество максимально потребляемой СУБД оперативной памяти выставлено 4Гб.
Стоит галочка "Приоритет SQL сервера". Максимальное количество рабочих потоков выставлено 2048.
Была установлена платформа 1С: Предприятие 8.3.14.1565 x64
и создана база onecdb в клиент-серверном варианте
Результат нагрузочного теста TPC-1C выглядит так:
При запуске второго теста из используемых, я установил следующие показатели при замерах:
И получил такой результат. Количество баллов - это тоже самое время в мс, т.е. чем меньше - тем лучше.
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:01:53, 671мс | 113671 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:52, 327мс | 52327 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:24, 500мс | 24500 |
Очистка штрихкодов 120,000 метод Набором | 00:06:47, 181мс | 407181 |
Получение оборотов, количество строк: 1,000 | 235мс | 235 |
Получение остатков, количество строк: 1,000 | 16мс | 16 |
Получение первого среза цен для 1,000 | 655мс | 655 |
Получение последнего среза цен для 1,000 | 625мс | 625 |
Создание номенклатуры 10,000 | 00:00:58, 624мс | 58624 |
Создание штрихкодов 120,000 метод Набором | 00:00:08, 484мс | 8484 |
Удаление номенклатуры 10,000 | 00:00:54, 593мс | 54593 |
Количество баллов | 00:12:00, 911мс | 720911 |
Тестирование платформы на Debian 9.7 + PostgreSQL 11 на одной машине
В качестве стенда для тестов была создана виртуальная машина с такими же характеристиками. О том, как это сделать самостоятельно, можно прочитать в моей предыдущей статье.
Была произведена чистая установка ОС Debian 9.7
Была установлена СУБД PostgreSQL 11 (сборка от Postgrespro)
Был установлен сервер 1С: Предприятие 8.3.14.1565
И создана база onecpg в клиент-серверном варианте
Результат нагрузочного теста TPC-1C выглядит так:
* тест произведен без оптимизации PSQL
Результат нагрузочного теста TPC-1C при оптимизации PSQL:
* для оптимизации PSQL я воспользовался утилитой PGTune. Оптимизация делалась "поверхностно" под аппаратную конфигурацию стенда, так как более глубокие настройки делаются под определенные объемы БД, их количество на одном сервере и под определенное количество пользователей. Файл конфигурации привел к такому виду:
# DB Version: 11
# OS Type: linux
# DB Type: mixed
# Total Memory (RAM): 8 GB
# CPUs num: 4
# Connections num: 10
# Data Storage: ssd
max_connections = 10
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 104857kB
min_wal_size = 1GB
max_wal_size = 2GB
max_worker_processes = 4
max_parallel_workers_per_gather = 2
max_parallel_workers = 4
superuser_reserved_connections = 3
max_wal_senders = 0
standard_conforming_strings = off
listen_addresses = '*'
port = 5432
Запуск второго теста до оптимизации PSQL показал такие результаты
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:01:25, 746мс | 85746 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:41, 725мс | 41725 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:06, 587мс | 6587 |
Очистка штрихкодов 120,000 метод Набором | 00:05:48, 601мс | 348601 |
Получение оборотов, количество строк: 1,000 | 59мс | 59 |
Получение остатков, количество строк: 1,000 | 3мс | 3 |
Получение первого среза цен для 1,000 | 00:00:01, 43мс | 1043 |
Получение последнего среза цен для 1,000 | 00:00:01, 49мс | 1049 |
Создание номенклатуры 10,000 | 00:00:42, 682мс | 42682 |
Создание штрихкодов 120,000 метод Набором | 00:00:05, 392мс | 5392 |
Удаление номенклатуры 10,000 | 00:00:50, 467мс | 50467 |
Количество баллов | 00:09:43, 354мс | 583354 |
Результат второго теста после оптимизации
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:01:24, 118мс | 84118 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:39, 620мс | 39620 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:06, 493мс | 6493 |
Очистка штрихкодов 120,000 метод Набором | 00:05:38, 698мс | 338698 |
Получение оборотов, количество строк: 1,000 | 46мс | 46 |
Получение остатков, количество строк: 1,000 | 4мс | 4 |
Получение первого среза цен для 1,000 | 00:00:01, 44мс | 1044 |
Получение последнего среза цен для 1,000 | 00:00:01, 42мс | 1042 |
Создание номенклатуры 10,000 | 00:00:43, 562мс | 43562 |
Создание штрихкодов 120,000 метод Набором | 00:00:05, 693мс | 5693 |
Удаление номенклатуры 10,000 | 00:00:46, 456мс | 46456 |
Количество баллов | 00:09:26, 776мс | 566776 |
Тестирование платформы на Debian 9.7 + PostgreSQL 10.5-11.1C (сборка от 1С) на одной машине
В качестве стенда для тестов была создана виртуальная машина с такими же характеристиками.
Была произведена чистая установка ОС Debian 9.7
Была установлена СУБД PostgreSQL 10.5-11.1C (сборка от 1C)
Был установлен сервер 1С: Предприятие 8.3.14.1565
Результат нагрузочного теста TPC-1C выглядит так:
* тест произведен без оптимизации PSQL
Запуск второго теста показал такие результаты
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:01:23, 119мс | 83119 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:41, 404мс | 41404 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:06, 557мс | 6557 |
Очистка штрихкодов 120,000 метод Набором | 00:05:52, 474мс | 352474 |
Получение оборотов, количество строк: 1,000 | 49мс | 49 |
Получение остатков, количество строк: 1,000 | 4мс | 4 |
Получение первого среза цен для 1,000 | 00:00:01, 176мс | 1176 |
Получение последнего среза цен для 1,000 | 00:00:01, 141мс | 1141 |
Создание номенклатуры 10,000 | 00:00:41, 958мс | 41958 |
Создание штрихкодов 120,000 метод Набором | 00:00:05, 223мс | 5223 |
Удаление номенклатуры 10,000 | 00:00:46, 143мс | 46143 |
Количество баллов | 00:09:39, 248мс | 579248 |
Тестирование платформы на Debian 9.7 + MS SQL 2017
В качестве стенда для тестов была создана виртуальная машина с такими же характеристиками.
Была произведена чистая установка ОС Debian 9.7
Была установлена СУБД MS SQL 2017
Был установлен сервер 1С: Предприятие 8.3.14.1565
При создании базы данных я получаю ошибку
что собственно и логично, т.к. сервер 1С + MS SQL на линуксе пока не работает.
Теперь проведем ряд тестов, использую сервер 1С: Предприятие на одной машине, а сервер СУБД на другой
Debian 9.7 + PostgreSQL | Windows Server 2019 + 1C: Предприятие
Результат нагрузочного теста TPC-1C выглядит так:
Результат второго теста:
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:02:13, 418мс | 133418 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:01:07, 686мс | 67686 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:10, 609мс | 10609 |
Очистка штрихкодов 120,000 метод Набором | 00:07:47, 276мс | 467276 |
Получение оборотов, количество строк: 1,000 | 63мс | 63 |
Получение остатков, количество строк: 1,000 | 0мс | 0 |
Получение первого среза цен для 1,000 | 00:00:01, 468мс | 1468 |
Получение последнего среза цен для 1,000 | 00:00:01, 469мс | 1469 |
Создание номенклатуры 10,000 | 00:00:55, 555мс | 55555 |
Создание штрихкодов 120,000 метод Набором | 00:00:07, 327мс | 7327 |
Удаление номенклатуры 10,000 | 00:01:04, 406мс | 64406 |
Количество баллов | 00:13:29, 277мс | 809277 |
Windows Server 2019 + MS SQL 2017 | Windows Server 2019 + 1C: Предприятие
Результат нагрузочного теста TPC-1C выглядит так:
Результат второго теста:
Название операции | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:02:15, 940мс | 13 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:01:05, 867мс | 65867 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:23, 336мс | 23336 |
Очистка штрихкодов 120,000 метод Набором | 00:05:51, 602мс | 351602 |
Получение оборотов, количество строк: 1,000 | 230мс | 230 |
Получение остатков, количество строк: 1,000 | 8мс | 8 |
Получение первого среза цен для 1,000 | 619мс | 619 |
Получение последнего среза цен для 1,000 | 635мс | 635 |
Создание номенклатуры 10,000 | 00:00:48, 558мс | 48558 |
Создание штрихкодов 120,000 метод Набором | 00:00:08, 470мс | 8470 |
Удаление номенклатуры 10,000 | 00:00:49, 550мс | 49550 |
Количество баллов | 00:11:24, 815мс | 684815 |
Результаты
Результаты нагрузочного теста TPC-1C
Сервер 1С + СУБД на одной машине | Количество баллов | Скорость диска в 1 поток | Максимальная скорость |
Windows Server 2019 + MS SQL 2017 | 22.52 | 66948 Кб/с | 168805 Кб/с |
Debian 9.7 + PostgreSQL 11 | 23.15/23.92 | 107992/114973 Кб/с | 320746/321888 Кб/с |
Debian 9.7 + PostgreSQL 10.5-11.1C | 23.36 | 92714 Кб/с | 279110 Кб/с |
Сервер 1С и СУБД на разных машинах | Количество баллов | Скорость диска в 1 поток | Максимальная скорость |
Debian 9.7 + PostgreSQL | Windows Server 2019 + 1C: Предприятие | 17.06 | 55559 Кб/с | 131712 Кб/с |
Windows Server 2019 + MS SQL 2017 | Windows Server 2019 + 1C: Предприятие | 23.92 | 48859 Кб/с | 125099 Кб/с |
Результаты тестирования, где сервер 1С и СУБД находятся на одной машине
Сервер 1С + СУБД на одной машине | Windows Server 2019 + MS SQL 2017 | Debian 9.7 + PostgreSQL 11 | Debian 9.7 + PostgreSQL 10.5-11.1C | |||||
Название операции | Время выполнения | Количество баллов | Время выполнения | Количество баллов | Время выполнения | Количество баллов | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:01:53, 671мс | 113671 | 00:01:25, 746мс | 85746 | 00:01:24, 118мс | 84118 | 00:01:23, 119мс | 83119 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:52, 327мс | 52327 | 00:00:41, 725мс | 41725 | 00:00:39, 620мс | 39620 | 00:00:41, 404мс | 41404 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:24, 500мс | 24500 | 00:00:06, 587мс | 6587 | 00:00:06, 493мс | 6493 | 00:00:06, 557мс | 6557 |
Очистка штрихкодов 120,000 метод Набором | 00:06:47, 181мс | 407181 | 00:05:48, 601мс | 348601 | 00:05:38, 698мс | 338698 | 00:05:52, 474мс | 352474 |
Получение оборотов, количество строк: 1,000 | 235мс | 235 | 59мс | 59 | 46мс | 46 | 49мс | 49 |
Получение остатков, количество строк: 1,000 | 16мс | 16 | 3мс | 3 | 4мс | 4 | 4мс | 4 |
Получение первого среза цен для 1,000 | 655мс | 655 | 00:00:01, 43мс | 1043 | 00:00:01, 44мс | 1044 | 00:00:01, 176мс | 1176 |
Получение последнего среза цен для 1,000 | 625мс | 625 | 00:00:01, 49мс | 1049 | 00:00:01, 42мс | 1042 | 00:00:01, 141мс | 1141 |
Создание номенклатуры 10,000 | 00:00:58, 624мс | 58624 | 00:00:42, 682мс | 42682 | 00:00:43, 562мс | 43562 | 00:00:41, 958мс | 41958 |
Создание штрихкодов 120,000 метод Набором | 00:00:08, 484мс | 8484 | 00:00:05, 392мс | 5392 | 00:00:05, 693мс | 5693 | 00:00:05, 223мс | 5223 |
Удаление номенклатуры 10,000 | 00:00:54, 593мс | 54593 | 00:00:50, 467мс | 50467 | 00:00:46, 456мс | 46456 | 00:00:46, 143мс | 46143 |
Количество баллов | 00:12:00, 911мс | 720911 | 00:09:43, 354мс | 583354 | 00:09:26, 776мс | 566776 | 00:09:39, 248мс | 579248 |
Результаты тестирования, где сервер 1С и СУБД находятся на разных машинах:
Сервер 1С и СУБД на разных машинах | Debian 9.7 + PostgreSQL | Windows Server 2019 + 1C: Предприятие | Windows Server 2019 + MS SQL 2017 | Windows Server 2019 + 1C: Предприятие | ||
Название операции | Время выполнения | Количество баллов | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:02:13, 418мс | 133418 | 00:02:15, 940мс | 135940 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:01:07, 686мс | 67686 | 00:01:05, 867мс | 65867 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:10, 609мс | 10609 | 00:00:23, 336мс | 23336 |
Очистка штрихкодов 120,000 метод Набором | 00:07:47, 276мс | 467276 | 00:05:51, 602мс | 351602 |
Получение оборотов, количество строк: 1,000 | 63мс | 63 | 230мс | 230 |
Получение остатков, количество строк: 1,000 | 0мс | 0 | 8мс | 8 |
Получение первого среза цен для 1,000 | 00:00:01, 468мс | 1468 | 619мс | 619 |
Получение последнего среза цен для 1,000 | 00:00:01, 469мс | 1469 | 635мс | 635 |
Создание номенклатуры 10,000 | 00:00:55, 555мс | 55555 | 00:00:48, 558мс | 48558 |
Создание штрихкодов 120,000 метод Набором | 00:00:07, 327мс | 7327 | 00:00:08, 470мс | 8470 |
Удаление номенклатуры 10,000 | 00:01:04, 406мс | 64406 | 00:00:49, 550мс | 49550 |
Количество баллов | 00:13:29, 277мс | 809277 | 00:11:24, 815мс | 684815 |
Тесты на файловых базах 1С
Результаты тестирования на Debian 9.7 + 1С 8.3.14.1565 и Windows 10 + 1С 8.3.14.1565
Файловая база 1С | Debian 9.7 + 1C: Предприятие | Windows 10 + 1C: Предприятие | ||
Название операции | Время выполнения | Количество баллов | Время выполнения | Количество баллов |
Создать и провести документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:44, 355мс | 44355 | 00:00:54, 219мс | 54 219 |
Создать и провести документ Установка цен 100 штук, по 1,000 позиций товара в каждом | 00:00:20, 385мс | 20385 | 00:00:26, 234мс | 26 234 |
Удалить документ Приход 200 штук, по 1,000 позиций товара в каждом | 00:00:07, 723мс | 7723 | 00:00:11, 563мс | 11 563 |
Очистка штрихкодов 120,000 метод Набором | 00:01:12, 522мс | 72522 | 00:02:28, 359мс | 148 359 |
Получение оборотов, количество строк: 1,000 | 136мс | 136 | 171мс | 171 |
Получение остатков, количество строк: 1,000 | 5мс | 5 | 0мс | 0 |
Получение первого среза цен для 1,000 | 610мс | 610 | 750мс | 750 |
Получение последнего среза цен для 1,000 | 600мс | 600 | 750мс | 750 |
Создание номенклатуры 10,000 | 00:00:18, 358мс | 18358 | 00:00:30, 968мс | 30 968 |
Создание штрихкодов 120,000 метод Набором | 00:00:04, 658мс | 4658 | 00:00:04, 937мс | 4 937 |
Удаление номенклатуры 10,000 | 00:00:18, 279мс | 18279 | 00:00:20, 219мс | 20 219 |
Количество баллов | 00:01:50,451мс | 110451 | 00:02:24, 874мс | 144 874 |
* тесты запускались 3 раза. Взято среднее значение тестов.
Результат нагрузочного теста TPC-1C выглядит так:
Файловая база 1С | Количество баллов |
Debian 9.7 + 1С: Предприятие | 66.67 |
Windows 10 + 1С: Предприятие | 49.5 |
Решил проверить скорость работы мобильного приложения 1С на нескольких телефонах. Использовал нагрузочный тест, который показывает скорость выполнения разных сценариев.
Результаты тестирования
Название тестов | Samsung S9+ | Xiaomi Mi5s | Xiaomi MiA2Lite | |||
Создать и провести документ Установка цен 100 штук, по 1 000 позиций товара в каждом | 00:00:57, 137мс | 57 137 | 00:02:32, 175мс | 152 175 | 00:01:49, 993мс | 109 993 |
Удалить документ Приход 200 штук, по 1 000 позиций товара в каждом | 00:01:15, 430мс | 75 430 | 00:02:04, 730мс | 124 730 | 00:02:11, 194мс | 131 194 |
Получение оборотов, количество строк: 1 000 | 00:00:01, 40мс | 1 040 | 00:00:02, 216мс | 2 216 | 00:00:02, 127мс | 2 127 |
Получение остатков, количество строк: 1 000 | 28мс | 28 | 61мс | 61 | 53мс | 53 |
Получение первого среза цен для 1 000 | 00:00:02, 528мс | 2 528 | 00:00:05, 337мс | 5 337 | 00:00:04, 658мс | 4 658 |
Получение последнего среза цен для 1 000 | 00:00:02, 520мс | 2 520 | 00:00:05, 692мс | 5 692 | 00:00:04, 791мс | 4 791 |
Создание номенклатуры 10 000 | 00:00:33, 796мс | 33 796 | 00:01:41, 170мс | 101 170 | 00:01:19, 443мс | 79 443 |
Удаление номенклатуры 10 000 | 00:00:24, 366мс | 24 366 | 00:01:22, 865мс | 82 865 | 00:00:56, 635мс | 56 635 |
Количество баллов | 00:05:14, 604мс | 314 604 | 00:13:13, 63мс | 793 063 | 00:10:32, 393мс | 632 393 |
Выводы
После ряда проведенных тестов, можно наглядно посмотреть как при одних и тех же условиях меняется производительность и скорость работы 1С: Предприятие.
СУБД + Сервер 1С на одной машине | Сервер и СУБД разнесены | Файловые | Мобильные | |||||||||||
Название операции | Windows 2019 + MS SQL 2017 | Debian 9.7 + PSQL 11 (до оптим) |
Debian 9.7 + PSQL 11 (с оптим) |
Debian 9.7 + PSQL 10.5-11.1C |
Debian 9.7 + PSQL Win 2019 + 1C |
Win 2019 + MS SQL 2017 Win 2019 + 1C |
Debian 9.7 | Windows 10 | Samsung S9+ |
Xiaomi Mi5s |
Xiaomi MiA2Lite |
|||
Создать и провести документ Приход 200 штук, по 1,000 товара | 113 671 | 85 746 | 84 118 | 83 119 | 133 418 | 135 940 | 44 355 | 54 219 | 117 759 | 318 817 | 243 499 | |||
Создать и провести документ Установка цен 100 штук, по 1,000 товара | 52 327 | 41 725 | 39 620 | 41 404 | 67 686 | 65 867 | 20 385 | 26 234 | 57 137 | 152 175 | 109 993 | |||
Удалить документ Приход 200 штук, по 1,000 товара | 24 500 | 6 587 | 6 493 | 6 557 | 10 609 | 23 336 | 7 723 | 11 563 | 75 430 | 124 730 | 131 194 | |||
Очистка штрихкодов 120,000 метод Набором | 407 181 | 348 601 | 338 698 | 352 474 | 467 276 | 351 602 | 72 522 | 148 359 | ||||||
Получение оборотов, количество строк: 1,000 | 235 | 59 | 46 | 49 | 63 | 230 | 136 | 171 | 1 040 | 2 216 | 2 127 | |||
Получение остатков, количество строк: 1,000 | 16 | 3 | 4 | 4 | 0 | 8 | 5 | 0 | 28 | 61 | 53 | |||
Получение первого среза цен для 1,000 | 655 | 1 043 | 1 044 | 1 176 | 1 468 | 619 | 610 | 750 | 2 528 | 5 337 | 4 658 | |||
Получение последнего среза цен для 1,000 | 625 | 1 049 | 1 042 | 1 141 | 1 469 | 635 | 600 | 750 | 2 520 | 5 692 | 4 791 | |||
Создание номенклатуры 10,000 | 58 624 | 42 682 | 43 562 | 41 958 | 55 555 | 48 558 | 18 358 | 30 968 | 33 796 | 101 170 | 79 443 | |||
Создание штрихкодов 120,000 метод Набором | 8 484 | 5 392 | 5 693 | 5 223 | 7 327 | 8 470 | 4 658 | 4 937 | ||||||
Удаление номенклатуры 10,000 | 54 593 | 50 467 | 46 456 | 46 143 | 64 406 | 49 550 | 18 279 | 20 219 | 24 366 | 82 865 | 56 635 | |||
Количество баллов | 720 911 | 583 354 | 566 776 | 579 248 | 809 277 | 684 815 | 110 451 | 144 874 | 314 604 | 793 063 | 632 393 |
При использовании варианта расположения сервера 1С с сервером СУБД на одной машине, вариант Linux + PSQL 11 работает быстрее (566776 балов) чем MS Windows + MS SQL (720911 балов), причем даже без настроек оптимизации (583354 бала) и не зависимо от версии PostgreSQL (579248 балов).
В варианте, когда сервер 1С: Предприятие стоит отдельно от сервера СУБД, то здесь быстрее работает ПО от Microsoft (684815 баллов), чем ПО на Linux (809277 баллов).Серверная база 1С работает быстрее в связке Linux + PostgreSQL + 1С: Предприятие (566776 баллов), чем MS Windows + MS SQL + 1С: Предприятие (720911 баллов).
При использовании файловой базы - явным "лидером" стала ОС Linux. 110451 балл, против 144874 балла.
Глядя на все эти цифры, можно сделать вывод, что практически при всех вариантах использования 1С и СУБД, бесплатное ПО показывает результат лучший, чем платное. Тогда встает закономерный вопрос: зачем платить больше?
Если мы говорим об организации рабочих мест на кассах магазинов, то есть смысл обратить внимание на бесплатное ПО. Работает оно не хуже платного, но бюджет экономит нам точно.
Но хочу сразу предупредить возможные комментарии - всё что ни делается, всё относительно! Ситуации разные, задачи разные. И здесь не затрагиваются вопросы организации хранения, дублирования, восстановления, безотказности в работе! И тем более здесь нет и не будет сравниваться информация по поводу возможностей тех, либо иных продуктов.
Здесь показан сравнительный тест производительности 1С: Предприятие.
P.S.
Конечно, у бесплатного ПО на кассах есть один существенный недостаток - отсутствие драйверов, особенно со старым оборудованием. И это конечно очень грустно. Но, надеюсь что эта статься внесет понимание о том, что в реалиях многих бизнесов, где используют пиратские версии Windows и SQL, либо лицензируют их не по правилам (на SQL сервер берут одну лицензию пользователя, а не по количеству пользователей которые работают с 1С См. п.17). То и эти компании поймут, что бесплатные продукты не просто - то же самое, что и платные, а даже в некоторых случаях быстрее.