Переводить ли базу 1С на SQL и что изменится на практике
Содержание
SQL-сервер даёт 1С три вещи: базе не мешает одновременная работа 10–100 пользователей, данные лучше защищены от сбоев, а мощность наращивается без смены архитектуры. Цена — лицензия на сервер 1С, отдельный сервер или виртуальная машина и человек, который будет его обслуживать.
Если в базе работают 3–5 человек и всё летает, переход ничего не даст. Если в 10 утра бухгалтерия ждёт, пока кто-то проведёт документ, а закрытие месяца идёт полдня, SQL-сервер для 1С окупится быстро.
Чем файловая база отличается от клиент-серверной
В файловом режиме вся база — один файл 1Cv8.1CD в общей папке. Каждый клиент сам читает и пишет этот файл по сети. Встроенная файловая СУБД работает внутри процесса клиента: никакого центрального «диспетчера» нет.
В клиент-серверном режиме появляются два звена:
- 🖥 Кластер серверов
1С — службы агента (
ragent, порт 1540), менеджера кластера (rmngr, 1541) и рабочих процессов (rphost, диапазон портов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591). Здесь выполняется код конфигурации, запросы, фоновые задания. - 🗄 СУБД — Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database. Здесь хранятся таблицы.
Клиент больше не трогает данные напрямую. Он передаёт команду серверу 1С, тот формирует запрос к СУБД и возвращает клиенту только результат.
| Параметр | Файловый режим | Клиент-серверный режим |
|---|---|---|
| Где хранятся данные | Файл 1Cv8.1CD в папке | Таблицы в СУБД |
| Кто выполняет запросы | Компьютер пользователя | Сервер 1С и СУБД |
| Что идёт по сети | Страницы файла базы | Команды и готовые результаты |
| Блокировки при записи | На уровне таблиц | На уровне записей |
| Фоновые и регламентные задания | Только пока открыт сеанс клиента | Выполняет сервер круглосуточно |
| Доступ пользователя к файлам базы | Нужны права на чтение и запись папки | Не нужен |
Последняя строка часто недооценена. В файловом варианте любой сотрудник с доступом к папке может скопировать базу целиком на флешку. В клиент-серверном у него нет доступа ни к файлам СУБД, ни к серверу.
Что даёт SQL-сервер для 1С при многопользовательской работе
Главный выигрыш — в блокировках. Файловая СУБД при записи блокирует таблицу целиком. Пока один бухгалтер проводит большую реализацию, другой, проводящий поступление, может ждать: обе операции пишут в одни и те же регистры.
На SQL-сервере в управляемом режиме блокировок 1С блокирует только нужные записи. Если продавцы работают с разными складами или разными организациями, их документы не мешают друг другу.
Где разница видна сразу:
- 📈 Пиковые часы. 15–20 человек одновременно проводят документы — в файловом режиме очередь, в клиент-серверном работа идёт параллельно.
- 📊 Тяжёлые отчёты. Оборотно-сальдовая ведомость за год считается на сервере, а не перекачивается по сети на ноутбук.
- 🔁 Закрытие месяца и перепроведение. Сервер берёт эту нагрузку на свои ядра и память, пользовательский компьютер не «висит».
- 🌐 Удалённая работа. Тонкий клиент через интернет или веб-клиент работает заметно лучше: по каналу идут результаты, а не куски файла базы.
- ⏰ Регламентные задания. Обмены, загрузка курсов, ЭДО, полнотекстовый индекс работают по расписанию, даже если все ушли домой.
На 1–3 пользователях файловая база часто отвечает быстрее клиент-серверной на одиночных операциях. У неё нет сетевого «прыжка» между сервером 1С и СУБД. Переход на SQL ради скорости при одном-двух пользователях — пустая трата денег.
Ориентир по числу пользователей:
| Одновременно работают | Рекомендация |
|---|---|
| 1–5 | Файловый режим, база на быстром диске |
| 5–10 | Зависит от нагрузки: при частых ожиданиях блокировок — переходить |
| 10 и больше | Клиент-серверный режим |
| База больше 10–15 ГБ или тяжёлые обмены | Клиент-серверный режим, даже при малом числе пользователей |
Надёжность хранения и восстановление после сбоя
Файл 1Cv8.1CD уязвим. Отключили свет во время записи, оборвалась сеть у одного клиента — файл может повредиться. Тогда начинается тестирование и исправление, иногда с потерей данных.
СУБД пишет каждую транзакцию сначала в журнал, потом в файлы данных. После аварийного перезапуска она сама доводит или откатывает незавершённые транзакции. Обрыв сети у пользователя базу не повреждает вовсе — у клиента просто нет доступа к файлам.
Что появляется в плане резервного копирования (на примере MS SQL):
- Полная копия по расписанию — ночью, без выгона пользователей.
- Разностная копия — изменения с последней полной, например каждые 4 часа.
- Копия журнала транзакций при полной модели восстановления — каждые 15–30 минут.
- Восстановление на момент времени. Удалили в 14:37 документы по ошибке — базу можно восстановить в копию на 14:36 и перенести оттуда данные.
В файловом режиме полная резервная копия — это либо выгрузка .dt (требует монопольного доступа), либо копирование файла при выгнанных пользователях. Копия файла «на ходу» может оказаться нерабочей.
Модель восстановления «Полная» без регулярных копий журнала приводит к бесконечному росту файла журнала и переполнению диска. Если копии журнала не настроены, ставьте модель «Простая».
Масштабируемость: как расти без смены архитектуры
Файловую базу можно ускорить только одним способом — поставить более быстрый диск и сеть. Дальше потолок.
Клиент-серверная схема растёт по шагам:
- 🧠 Добавить памяти серверу СУБД — больше данных лежит в кэше, меньше чтений с диска.
- ⚙️ Разнести сервер 1С и СУБД на разные машины, когда им тесно вместе.
- 👥 Увеличить число рабочих процессов в кластере для большего числа сеансов.
- 🏢 Добавить второй рабочий сервер в кластер и настроить отказоустойчивость — это возможности лицензии КОРП.
- 🗂 Держать на одном кластере десятки баз: бухгалтерию, ЗУП, торговлю, копии для тестов.
Отдельный плюс — копия базы для разработки и тестов создаётся за минуты: восстановить бэкап SQL под другим именем и зарегистрировать новую базу в кластере.
Администрирование и тонкая настройка
Вместе с SQL появляются инструменты, которых у файловой базы нет.
Со стороны 1С:
- Консоль администрирования серверов 1С (оснастка MMC или утилита
racчерез сервер администрированияras) — список сеансов, соединений, блокировок, завершение зависших сеансов. - Технологический журнал — запись длительных запросов, ожиданий на блокировках и взаимоблокировок в файлы логов.
- Установка блокировки начала сеансов и регламентных заданий на время обновления.
Со стороны MS SQL (в SQL Server Management Studio):
- Планы обслуживания: перестроение индексов, обновление статистики, проверка целостности
DBCC CHECKDB. - Ограничение памяти
max server memory, чтобы SQL не забрал всё и оставил место серверу 1С и ОС. - Параметр
max degree of parallelism: для баз 1С обычно ставят1.
Пример настройки этих двух параметров (значение памяти — для сервера с 32 ГБ, где на той же машине работает сервер 1С):
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 20480;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;
Перестроение индексов на большой базе нагружает диск и может замедлить работу пользователей. Ставьте его на ночь или выходные. Завершение рабочего процесса или перезапуск службы сервера 1С обрывает все сеансы — делайте это вне рабочего времени и после предупреждения пользователей.
Для PostgreSQL логика та же: регулярный VACUUM ANALYZE, настройка shared_buffers и work_mem под объём памяти. Для 1С ставят сборку PostgreSQL с доработками под платформу — её выпускают фирма 1С и Postgres Professional.
Железо и лицензии для работы 1С на SQL
Оборудование. Ориентиры для одной машины, где стоят и сервер 1С, и СУБД:
| Пользователей | Ядра CPU | Память | Диски |
|---|---|---|---|
| 10–20 | 4–6 | 16–32 ГБ | SSD/NVMe, 2 раздела: данные и журналы |
| 20–50 | 8–12 | 32–64 ГБ | NVMe, отдельно данные, журналы, tempdb |
| 50–100 | Сервер 1С и СУБД раздельно, по 8–16 ядер | 64–128 ГБ на СУБД | NVMe в RAID 10 |
Решающие факторы — частота ядра (код 1С в основном однопоточный) и скорость диска. Двадцать медленных ядер на HDD проиграют восьми быстрым на NVMe.
Лицензии 1С. Клиентские лицензии остаются прежними — меняется только то, что к ним добавляется лицензия на сервер 1С:Предприятия:
- ПРОФ — для одного рабочего сервера; закрывает задачи большинства компаний.
- КОРП — добавляет кластер из нескольких серверов, отказоустойчивость и ряд механизмов для крупных систем.
Ориентировочно лицензия сервера ПРОФ стоит порядка 100 тыс. рублей, КОРП — в несколько раз дороже. Точную цену называет партнёр 1С на дату покупки.
Лицензии СУБД:
| СУБД | Стоимость | Ограничения |
|---|---|---|
| PostgreSQL (сборка для 1С) | Бесплатно | Нужен администратор, знакомый с PostgreSQL |
| MS SQL Server Express | Бесплатно | До 10 ГБ на базу, жёсткий лимит памяти и ядер, нет SQL Server Agent для заданий по расписанию |
| MS SQL Server Standard | Платно, по ядрам или по серверу + CAL | Подходит для большинства внедрений |
Express подойдёт для пробы и небольших баз. Задания резервного копирования без SQL Server Agent придётся запускать через планировщик Windows и sqlcmd.
Как перенести файловую базу на SQL-сервер
Перенос идёт через выгрузку и загрузку .dt. Порядок такой:
- Выгоните пользователей и откройте файловую базу в Конфигураторе.
- Выполните
Администрирование → Выгрузить информационную базу…и сохраните файл.dt. - Создайте новую базу на сервере: в окне запуска 1С
Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации, вариант расположения — на сервере 1С:Предприятия. Укажите кластер, имя базы, тип СУБД, сервер СУБД и учётную запись. - Откройте новую базу в Конфигураторе и выполните
Администрирование → Загрузить информационную базу…, выбрав сохранённый.dt. - Проверьте вход пользователей, обмены, регламентные задания и печатные формы.
- Настройте резервное копирование на стороне СУБД до того, как пустить в базу людей.
После загрузки в серверную базу регламентные задания начнут работать по расписанию сразу, в том числе обмены. Если старая файловая база ещё жива и тоже обменивается, данные могут задвоиться. Отключите обмены в одной из баз до окончательного переключения.
Типичные ошибки при переходе:
- ❌ SQL и сервер 1С на одной машине без ограничения
max server memory— СУБД забирает всю память, сервер 1С начинает тормозить. - ❌ Базы и журналы СУБД на одном медленном диске.
- ❌ Полная модель восстановления без копий журнала — диск заканчивается через пару месяцев.
- ❌ Ожидание, что тормоза из-за тяжёлого кода доработок исчезнут сами. Плохой запрос на SQL тоже будет медленным — его нужно найти технологическим журналом и переписать.
Частые вопросы
Что лучше для 1С — MS SQL или PostgreSQL?
Можно ли вернуть базу обратно в файловый режим?
.dt из серверной базы и загрузите его в новую пустую файловую базу. Формат выгрузки одинаковый для обоих режимов.