Перевод рабочей информационной базы 1С с файлового режима на клиент-серверный — естественный этап развития любой учетной системы при росте объема данных и числа активных пользователей. В типовых конфигурациях, таких как 1С:Розница, накопление чеков ККМ и записей регистров движения товаров приводит к деградации производительности и приближению к технологическим пределам файловой СУБД. Разберем детально, подходит ли бесплатная СУБД PostgreSQL для таких задач, как работают блокировки и какие параметры необходимо настроить для стабильной работы.
Проанализируем причины, по которым оставаться на файловой базе при размере свыше 10 ГБ становится рискованно:
1Cv8.1CD действует технологическое ограничение в 4 ГБ. Данный лимит рассчитывается отдельно для трех составляющих каждого объекта: тела таблицы (основные данные), индексного файла и блока хранения двоичных данных и длинных строк (BLOB). Если таблица регистра сведений или накопления превышает 4 ГБ по данным или индексам, база аварийно прекращает работу.Существует заблуждение, будто PostgreSQL в связке с 1С блокирует таблицы целиком. Выясним, как это устроено на самом деле:
Все современные конфигурации 1С (включая 1С:Розница 2.2 / 2.3) работают исключительно в режиме управляемых блокировок (свойство конфигурации РежимУправляемыхБлокировокДанных установлено в значение Управляемый). В этом режиме блокировками транзакций управляет непосредственно кластер серверов 1С:Предприятие. Блокируются только конкретные диапазоны записей и строк регистров по ключевым полям (например, по номенклатуре или складу), а не таблицы базы данных целиком. Таким образом, проведение чеков и документов не вызывает тотальных блокировок при грамотно спроектированных движениях.
Для корректной работы платформы 1С нельзя использовать стандартную сборку PostgreSQL с официального сайта СУБД. Рассмотрим ключевые нюансы развертывания:
fork). На серверах под управлением Linux СУБД демонстрирует максимальное быстродействие и стабильность. На ОС Windows PostgreSQL функционирует через слой эмуляции, что создает повышенную нагрузку на оперативную память и дисковую подсистему.initdb) критически важно задавать кодировку UTF-8 и локаль ru_RU.UTF-8 (или C в зависимости от рекомендаций сборки), иначе сортировка строковых данных в запросах 1С будет работать некорректно.В отличие от MS SQL Server, который эффективно оптимизирует ресурсы «из коробки», PostgreSQL требует обязательной первоначальной настройки конфигурационного файла postgresql.conf. Разберем основные параметры:
shared_preload_libraries = 'online_analyze, plantuner'
plantuner.fix_empty_table = on
online_analyze.enable = on
online_analyze.verbose = off
online_analyze.table_type = 'temporary'
shared_buffers — выделяем примерно 25–30% от всей физической памяти сервера под буферный кэш СУБД.effective_cache_size — задаем значение на уровне 50–75% от объема RAM, подсказывая планировщику объем доступного дискового кэша ОС.work_mem — устанавливаем значение в диапазоне от 32MB до 128MB. Не следует чрезмерно завышать этот параметр, так как память выделяется на каждую операцию сортировки внутри каждого сеанса.maintenance_work_mem — задаем значение от 512MB до 1GB для ускорения создания индексов и операций очистки.
autovacuum = on
autovacuum_max_workers = 4
autovacuum_vacuum_scale_factor = 0.05
autovacuum_analyze_scale_factor = 0.02
autovacuum_cost_limit = 1000
max_locks_per_transaction со стандартных 64 до 256 или 512.При загрузке объемных информационных баз из файла .dt в PostgreSQL администраторы часто сталкиваются с ошибками нехватки памяти или сбоями транзакций. Разберем по шагам алгоритм ускорения и стабилизации первичного импорта:
postgresql.conf на время загрузки файла:
fsync = off
synchronous_commit = off
checkpoint_timeout = 30min
max_wal_size = 16GB
fsync = on и synchronous_commit = on и перезапускаем службу СУБД, чтобы гарантировать сохранность данных от сбоев питания.Перед переносом базы 1С:Розница рекомендуется выполнить сервисную оптимизацию прямо в файловой базе:
ОтчетОРозничныхПродажах, а сами отработанные чеки удаляются. Это позволяет сократить размер базы на 30–60%.Внедрение связки «1С:Предприятие + PostgreSQL» при правильной сборке дистрибутива и базовом тюнинге параметров обеспечивает стабильную работу базы данных объемом 12 ГБ на 10–20 активных пользователей без необходимости покупки дорогостоящих коммерческих СУБД.