Файловая база, MS SQL или PostgreSQL: на чём хранить данные 1С и как выбрать
Содержание
1С:Предприятие 8.3 работает с базой данных в двух режимах. В файловом режиме платформа хранит всё в одном файле 1Cv8.1CD и обходится без отдельной СУБД. В клиент-серверном режиме данные лежат в одной из поддерживаемых СУБД: Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database. На практике в России выбирают между тремя вариантами: файл, MS SQL и PostgreSQL.
Вопрос «какую базу выбрать» обычно встаёт, когда база начала тормозить при пяти-семи пользователях или когда компания покупает сервер и не хочет переплатить за лицензии. Ниже — критерии выбора по числу пользователей, бюджету и железу, а также порядок переноса базы между режимами.
Какие СУБД поддерживает платформа 1С:Предприятие 8.3
Конфигурация (Бухгалтерия, ЗУП, УТ, ERP) не привязана к конкретной СУБД. Одна и та же база 1С может жить в файле, а через месяц переехать на сервер с PostgreSQL. Прикладной код при этом не меняется: запросы к данным платформа транслирует в язык конкретной СУБД сама.
| Вариант | Что нужно | Где встречается |
|---|---|---|
| 📁 Файловый режим | Только платформа 1С | Небольшие фирмы, ИП, бухгалтерия на 1-5 человек |
| 🟦 Microsoft SQL Server | Сервер 1С + MS SQL | Средний и крупный бизнес, исторически самый частый выбор |
| 🐘 PostgreSQL | Сервер 1С + PostgreSQL (сборка для 1С) | Импортозамещение, Linux-серверы, экономия на лицензиях |
| IBM Db2, Oracle Database | Сервер 1С + коммерческая СУБД | Редкие проекты, где эта СУБД уже стоит у заказчика |
Клиент-серверный режим всегда требует сервера 1С:Предприятия. СУБД сама по себе с клиентом 1С не работает : между ними стоит кластер серверов 1С, который и обращается к базе данных.
Файловая база 1С: когда её хватает
Файловая информационная база — это каталог с файлом 1Cv8.1CD и служебными папками (кэш, индекс полнотекстового поиска, журнал регистрации). Работать с ней можно с одного компьютера или по сети через общую папку. Ещё один вариант — публикация на веб-сервере, тогда пользователи заходят через браузер или тонкий клиент.
Файловый вариант подходит, если:
- 👤 с базой работают 1-5 человек одновременно;
- 📦 объём базы — единицы гигабайт, без многолетней истории с тысячами документов в день;
- 💰 нет бюджета на лицензию сервера 1С и администратора;
- 🖥️ база лежит на SSD на том же компьютере или на быстром файловом сервере.
Проблемы начинаются с ростом нагрузки. Файл блокируется на запись целиком таблицами, поэтому при одновременном проведении документов пользователи ждут друг друга. По сети через общую папку каждый клиент сам читает файл, и медленная сеть или антивирус на файловом сервере резко замедляют работу.
Файловую базу нельзя держать на сетевом диске с нестабильным соединением или в папке, которую синхронизирует облачный клиент (Яндекс Диск, OneDrive и подобные). Обрыв на записи повреждает файл 1Cv8.1CD. Для проверки и исправления такой базы есть утилита chdbfl.exe в каталоге bin платформы и режим тестирования в Конфигураторе.
💡 Для файловой базы с 5-10 пользователями заметно помогает публикация на веб-сервере (Apache или IIS) на той же машине, где лежит файл. Тогда к файлу обращается только один процесс веб-сервера, а не десять клиентов по сети.
MS SQL Server для 1С: плюсы, редакции и настройка
Microsoft SQL Server много лет был основной СУБД для серверных баз 1С. Платформа с ним хорошо отлажена, большинство инструкций по администрированию и оптимизации написано именно под него.
Что даёт MS SQL:
- 🔒 блокировки на уровне записей, а не таблиц, поэтому десятки пользователей проводят документы параллельно;
- 💾 полноценное резервное копирование средствами СУБД, в том числе с журналом транзакций;
- 🛠️ привычные инструменты: SQL Server Management Studio, планы обслуживания, профилировщик.
Редакции. Бесплатная редакция Express ограничена размером одной базы 10 ГБ, объёмом памяти под буферный пул и числом ядер. Для учебной или маленькой базы её хватает, для рабочей среды — редко. Для боевых задач берут Standard, для крупных кластеров — Enterprise.
Лицензирование у Microsoft строится по модели «на ядро» или «сервер + клиентские лицензии». Нужно помнить, что при работе через сервер 1С клиентские лицензии считаются по реальным пользователям 1С, а не по одному подключению сервера 1С. С 2022 года официальная покупка новых лицензий Microsoft в России затруднена — многие компании поэтому и переходят на PostgreSQL.
Что настроить при создании базы на MS SQL:
- Ограничьте память сервера SQL (параметр
max server memory), чтобы осталось место под ОС и рабочие процессы 1С, если они на той же машине. - Для баз, где не нужно восстановление на момент времени, выберите модель восстановления
Simple. ДляFullнастройте регулярный бэкап журнала, иначе файл.ldfвырастет до размера диска. - Настройте план обслуживания: обновление статистик ежедневно, перестроение индексов раз в неделю в нерабочее время.
- При добавлении базы в кластере 1С укажите смещение дат 2000. Это значение нужно именно для MS SQL, на PostgreSQL оставляют 0.
PostgreSQL для 1С: открытая альтернатива
PostgreSQL — свободная СУБД без платы за лицензию. Для 1С используют не «чистый» PostgreSQL из репозитория дистрибутива, а сборку с патчами для 1С. Её выпускает фирма 1С (распространяется пользователям с подпиской вместе с платформой) и компании-партнёры, например Postgres Professional.
Патчи нужны, потому что 1С ожидает от СУБД поведения, близкого к MS SQL. В сборку добавлены расширения, например mchar (строки фиксированной длины с нечувствительностью к регистру), fulleq, fasttrun, а также online_analyze и plantuner, которые помогают планировщику на временных таблицах. С обычным PostgreSQL создание базы 1С либо не пройдёт, либо база будет работать медленно.
| Сборка | Цена | Когда выбирают |
|---|---|---|
| PostgreSQL от фирмы 1С | Бесплатно для пользователей с подпиской | Большинство внедрений на 5-100 пользователей |
| Postgres Pro Standard / Enterprise | Платная лицензия | Нужна техподдержка СУБД, отечественное ПО в реестре, крупные базы |
Плюсы PostgreSQL для 1С: нет затрат на лицензию СУБД, хорошо работает на Linux (вместе с сервером 1С для Linux), нет проблем с покупкой.
Минусы: без настройки postgresql.conf производительность ниже, чем у MS SQL на тех же задачах. Некоторые отчёты с тяжёлыми запросами выполняются дольше. Администратору нужен опыт именно с PostgreSQL.
Минимальная настройка после установки :
# postgresql.conf — ориентиры для сервера с 32 ГБ ОЗУ, где стоит только СУБД
shared_buffers = 8GB # около 25% памяти
effective_cache_size = 22GB # примерно 2/3-3/4 памяти
work_mem = 64MB
maintenance_work_mem = 1GB
max_connections = 500
Цифры подбирайте под свою машину. Если на этом же сервере работает кластер 1С, уменьшите shared_buffers и effective_cache_size, чтобы рабочим процессам 1С хватило памяти.
Регулярно запускайте VACUUM ANALYZE (или проверьте, что работает автоочистка autovacuum). Без этого статистика устаревает, а таблицы разбухают, и база 1С постепенно замедляется.
Сравнение режимов работы базы данных 1С
Сведём разницу в одну таблицу. Оценки производительности условные: многое зависит от железа, конфигурации и настройки.
| Критерий | Файловый режим | MS SQL Server | PostgreSQL |
|---|---|---|---|
| Пользователей одновременно | до 5-10 | десятки — сотни | десятки — сотни |
| Лицензия сервера 1С | не нужна | нужна | нужна |
| Лицензия СУБД | не нужна | платная (кроме Express) | бесплатно (сборка 1С) |
| Ограничение размера | нет жёсткого, но тормозит на больших объёмах | Express — 10 ГБ на базу | нет |
| Блокировки | по таблицам | по записям | по записям |
| ОС сервера | любая, где работает клиент | Windows (в основном) | Windows и Linux |
| Резервное копирование | копия файла при закрытой базе или выгрузка .dt | средства СУБД, онлайн | pg_dump, средства СУБД, онлайн |
| Сложность администрирования | минимальная | средняя | средняя, нужна настройка |
Ориентиры по стоимости (примерно, на момент написания, без учёта железа):
- 💼 лицензия на сервер 1С:Предприятия x86-64 — ориентировочно 80-100 тыс. ₽, версия КОРП — в несколько раз дороже;
- 🐘 PostgreSQL от 1С — 0 ₽ сверх подписки;
- 🟦 MS SQL Standard — сотни тысяч рублей на сервер при лицензировании по ядрам, если удаётся купить.
Клиентские лицензии 1С на рабочие места нужны в любом режиме, их число от выбора СУБД не зависит.
Требования к серверу баз данных для 1С
Точные требования зависят от конфигурации и интенсивности работы. ERP на 100 пользователей и Бухгалтерия на 15 — разные нагрузки. Ориентиры для старта:
| Пользователей | Процессор | ОЗУ (СУБД + сервер 1С на одной машине) | Диски |
|---|---|---|---|
| 10-20 | 4-6 ядер | 16-32 ГБ | SSD NVMe |
| 20-50 | 8-12 ядер | 32-64 ГБ | SSD NVMe, отдельный диск под журналы |
| 50-150 | 16+ ядер | 64-128 ГБ | Массив NVMe, СУБД и 1С лучше разнести |
На что смотреть в первую очередь:
- Диски. Для СУБД главное — скорость случайной записи. Классические HDD для рабочей базы 1С сегодня не используют.
- Память. Чем больше база помещается в кэш СУБД, тем реже обращения к диску. Если база весит 40 ГБ, сервер с 16 ГБ будет постоянно читать с диска.
- Частота ядра. Рабочие процессы 1С выигрывают от высокой частоты больше, чем от большого числа медленных ядер.
- Сеть между сервером 1С и СУБД. Если они на разных машинах, нужна быстрая локальная сеть с минимальной задержкой. Разносить их по разным площадкам нельзя.
Не размещайте сервер СУБД и кластер 1С на одном виртуальном хосте с «тяжёлыми» соседями без выделенных ресурсов. Перегруженный гипервизор даёт задержки дисков, и 1С тормозит при нормальных показателях внутри виртуальной машины.
Сетевые порты. Клиенты подключаются к агенту сервера 1С (порт 1540), менеджеру кластера (1541) и рабочим процессам (диапазон по умолчанию 1560-1591). К самой СУБД обращается только сервер 1С: MS SQL по умолчанию слушает порт 1433, PostgreSQL — 5432. Пользовательским компьютерам доступ к портам СУБД не нужен.
Перенос базы 1С между файлом, MS SQL и PostgreSQL
Универсальный способ миграции — выгрузка и загрузка информационной базы через файл .dt. Он не зависит от СУБД: файл, выгруженный из файловой базы, загружается в базу на PostgreSQL, и наоборот.
Порядок переноса
- Попросите пользователей выйти из базы и сделайте резервную копию.
- Откройте исходную базу в Конфигураторе и выберите
Администрирование → Выгрузить информационную базу. Сохраните файл.dt. - Создайте новую базу на сервере. Это делается в окне запуска 1С:
Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации, затем вариант «На сервере 1С:Предприятия». - Заполните параметры: кластер серверов, имя базы в кластере, тип СУБД, сервер баз данных, имя базы в СУБД, пользователь и пароль СУБД. Поставьте флажок создания базы данных в случае её отсутствия.
- Откройте новую пустую базу в Конфигураторе и выполните
Администрирование → Загрузить информационную базу, указав файл.dt. - Запустите базу в режиме 1С:Предприятие, проверьте остатки по ключевым счетам и регистрам, сравните с исходной базой.
Загрузка .dt полностью заменяет содержимое базы-приёмника. Перепроверьте, что открыта именно новая пустая база, а не рабочая.
Выгрузка и загрузка требуют монопольного доступа: все сеансы пользователей в базе будут недоступны. Планируйте перенос на вечер или выходные. Для базы на 50-100 ГБ загрузка может идти несколько часов.
Что учесть при переносе
- 🔑 Пользователи и пароли 1С переносятся вместе с
.dt. Если в базе настроена аутентификация операционной системы, проверьте имена доменных пользователей на новом сервере. - 🧩 Расширения конфигурации
попадают в
.dt, но после переноса убедитесь, что они подключены и активны. - 🔄 Если база участвует в обменах (РИБ, обмен с ЗУП, с сайтом), пропишите в настройках обмена новый адрес базы. Узлы обмена должны продолжить нумерацию, а не начать заново.
- 📅 При переходе с MS SQL на PostgreSQL смещение дат в новой базе указывайте 0. Значение влияет только на хранение в СУБД, сами данные в
.dtот него не зависят. - 📈 После загрузки на PostgreSQL выполните
ANALYZEпо всей базе, иначе первые часы работы запросы будут медленными из-за отсутствия статистики.
Обратный переход с сервера на файловую базу
делается так же: выгрузили .dt из серверной базы, создали пустую файловую, загрузили. Это удобно, чтобы сделать копию для тестирования обновления на своём компьютере.
Частые вопросы
Можно ли подключить 1С к MySQL или SQLite?
Нужна ли лицензия сервера 1С, если стоит бесплатный PostgreSQL?
Как узнать, файловая у меня база или серверная?
File=...), для серверной — имя сервера и базы (Srvr=...;Ref=...).