Администрирование · 10 мин
Как ускорить работу базы 1С: пошаговое руководство
Как ускорить работу базы 1С: диагностика узких мест, настройка СУБД и сервера, оптимизация запросов и регламентные операции для ускорения базы.
Медленная база 1С почти всегда имеет конкретную причину: нехватку оперативной памяти на сервере СУБД, фрагментированные индексы, разросшиеся таблицы итогов, неоптимальные запросы в доработанных конфигурациях или устаревшие настройки SQL Server / PostgreSQL. Прежде чем что-то менять, нужно понять, где именно теряется время — иначе любые действия будут случайными.
Ускорение базы складывается из нескольких уровней: аппаратное обеспечение, настройка СУБД, регламентное обслуживание, оптимизация кода и данных конфигурации. В большинстве случаев заметный эффект даёт уже правильное регламентное обслуживание и перенос файловой базы в клиент-серверный вариант.
Важно понимать ограничения: если база работает в файловом режиме по сети на десятки пользователей, никакие настройки не дадут устойчивой производительности — это архитектурное ограничение. В таком случае единственный правильный путь — переход на клиент-серверный вариант работы.
Как определить, что именно тормозит базу
Прежде чем менять настройки, зафиксируйте исходные показатели: время открытия справочника, проведения типового документа, формирования ключевого отчёта. Без этих цифр невозможно понять, дало ли эффект любое изменение.
Основной инструмент диагностики — технологический журнал кластера 1С и замеры производительности через конфигуратор («Отладка» → «Замер производительности»). Для клиент-серверных баз дополнительно используются средства СУБД: план выполнения запроса в SQL Server Management Studio или pgAdmin, динамические административные представления.
Типичные симптомы помогают сузить поиск. Если тормозят все операции одинаково — вероятны проблемы с дисковой подсистемой или памятью сервера. Если медленно работают отдельные отчёты — проблема в запросах или отсутствующих индексах. Если база «подвисает» при одновременной работе пользователей — проверяйте блокировки и уровень изоляции транзакций.
Загрузка CPU, RAM и дисков сервера СУБД
План запроса, отсутствующие индексы
Режим управляемых блокировок, уровень изоляции
Переход на клиент-серверный режим
Переход с файлового режима на клиент-серверный
Файловый режим подходит для одного-двух пользователей и небольших объёмов данных. При росте числа пользователей и размера базы он становится главным ограничением: каждый клиент читает файл базы по сети, блокировки грубые, параллельная работа крайне ограничена.
Переход на клиент-серверный вариант (MS SQL Server или PostgreSQL) даёт централизованную обработку данных на сервере, эффективное кэширование, управляемые блокировки и возможность регламентного обслуживания средствами СУБД. Это самое масштабное по эффекту изменение для растущих баз.
Для перехода потребуется: сервер с достаточным объёмом оперативной памяти, установленная СУБД, сервер 1С:Предприятия и выгрузка/загрузка базы через конфигуратор (dt-файл). После миграции обязательно проверьте работу регламентных заданий и обменов — они могут быть привязаны к старым путям.
Настройка сервера и СУБД
Для MS SQL Server критичны несколько параметров. Ограничьте максимальный объём памяти SQL Server, оставив операционной системе и серверу 1С несколько гигабайт, иначе при нехватке памяти начнётся свопинг и резкое падение производительности. Размещайте файлы данных и журнала транзакций на быстрых дисках, желательно SSD.
Для PostgreSQL обратите внимание на параметры shared_buffers, work_mem и effective_cache_size — значения по умолчанию рассчитаны на очень слабое оборудование и почти всегда требуют увеличения под реальный сервер. Конкретные значения зависят от объёма памяти сервера и нагрузки.
На уровне кластера 1С проверьте настройки рабочих процессов и ограничения объёма памяти процессов. Переполнение памяти рабочими процессами приводит к их аварийному перезапуску и «фризам» у пользователей.
Регламентное обслуживание базы
Со временем индексы фрагментируются, а статистика распределения данных устаревает — оптимизатор СУБД начинает строить неэффективные планы запросов. Регулярное обслуживание устраняет эту деградацию.
Минимальный регламент для клиент-серверной базы включает: обновление статистики, перестроение или реорганизацию индексов, очистку устаревших данных (помеченные объекты, протоколы обменов, версии объектов). В файловом режиме аналогичную роль выполняет «Тестирование и исправление» с включённой реиндексацией, но делать его нужно на копии и в нерабочее время.
Периодичность зависит от интенсивности работы: при активном документообороте обновление статистики разумно выполнять ежедневно или несколько раз в неделю, перестроение индексов — еженедельно. Настройте задания средствами СУБД (планы обслуживания, скрипты по расписанию), а не выполняйте вручную «когда вспомнили».
- 1Сделайте резервную копию базы
- 2Выполните обновление статистики средствами СУБД
- 3Перестройте или реорганизуйте индексы
- 4Удалите помеченные объекты и очистите служебные таблицы
- 5Измерьте время типовых операций и сравните с исходными значениями
Оптимизация конфигурации и запросов
Если инфраструктура в порядке, а отдельные операции всё равно медленные — причина в коде. Типичные проблемы: запросы в цикле, получение данных через точку от ссылки («разыменование» целыми цепочками), отсутствие индексов по полям отборов, чтение всей таблицы вместо выборки нужных записей.
Замер производительности в конфигураторе покажет, какие строки кода занимают больше всего времени. Для найденных запросов анализируйте план выполнения на стороне СУБД: полное сканирование больших таблиц (Table Scan / Seq Scan) вместо поиска по индексу — прямой сигнал к добавлению индекса или переписыванию условий запроса.
В типовых конфигурациях большую часть проблем решает штатная настройка: включение управляемых блокировок, настройка дат запрета изменения данных, отложенное проведение, регламентное сокращение периода расчёта итогов. Глубокая оптимизация кода требует разработчика — не меняйте типовые модули без понимания последствий для обновлений.
// Плохо: запрос в цикле
Для Каждого Строка Из ТаблицаТоваров Цикл
Запрос = Новый Запрос("ВЫБРАТЬ Цена ИЗ РегистрСведений.Цены ГДЕ Номенклатура = &Ном");
Запрос.УстановитьПараметр("Ном", Строка.Номенклатура);
// ...
КонецЦикла;
// Хорошо: один запрос по всей таблице через временную таблицу или соединениеСокращение объёма данных
Чем больше таблицы, тем дороже любые операции с ними. Регулярно удаляйте помеченные объекты, сворачивайте старые периоды в учётных регистрах, ограничивайте сроки хранения версий объектов и истории обменов данными.
Для очень больших баз рассмотрите свёртку итогов за закрытые периоды и перенос архивных данных в отдельную базу. Это трудоёмкая операция, требующая тестирования, но для многолетних баз она часто даёт эффект, недостижимый никакими настройками.
Как проверить результат
После каждого этапа изменений повторяйте те же замеры, что делали в начале: время проведения типового документа, формирования отчёта, открытия журнала. Сравнение «стало лучше на глаз» ненадёжно — субъективные ощущения сильно зависят от текущей загрузки.
Контролируйте также и обратные эффекты: добавление индексов не должно заметно замедлить проведение документов, а агрессивная очистка данных — нарушить отчётность за прошлые периоды.
Как проверить результат
Сократилось по сравнению с исходным замером
Не изменилось или выросло
Используются индексы (Index Seek / Index Scan)
Полное сканирование больших таблиц
Кратковременные, быстро снимаются
Длинные цепочки ожиданий, взаимоблокировки
Есть запас, нет активного свопинга
Память исчерпана, идёт запись в файл подкачки
Частые вопросы
Сколько оперативной памяти нужно серверу 1С?
Универсальной цифры нет: требования зависят от размера базы, числа пользователей и нагрузки. Практический ориентир — памяти должно хватать, чтобы СУБД могла кэшировать активно используемые данные, а у ОС и сервера 1С оставался запас. Признак нехватки — постоянный свопинг и высокая дисковая активность при обычных операциях.
Поможет ли SSD, если база тормозит?
Да, если узкое место — дисковая подсистема: перенос файлов базы и журнала транзакций на SSD часто даёт заметное ускорение. Но если проблема в неоптимальных запросах или файловом режиме по сети, эффект будет ограниченным.
Как часто нужно делать реиндексацию?
Зависит от интенсивности изменения данных. При активной работе — еженедельное перестроение или реорганизация индексов и более частое обновление статистики. Точную периодичность подбирают по динамике фрагментации и времени выполнения типовых запросов.
Можно ли ускорить файловую базу без перехода на SQL?
Частично: разместить базу локально на быстром диске, а не на сетевом ресурсе, уменьшить число одновременных пользователей, регулярно выполнять реиндексацию через тестирование и исправление. Но при росте нагрузки эти меры быстро упираются в ограничения файловой архитектуры.
Опасно ли удалять помеченные объекты?
Сама операция штатная и безопасная, но удалённые данные восстановить нельзя. Перед удалением убедитесь, что есть резервная копия, и не удаляйте объекты, которые могут понадобиться для отчётности или аудита за прошлые периоды.
Что делать, если после обновления конфигурации база стала медленнее?
Сначала выполните обновление статистики и перестроение индексов — после массовых изменения данных планы запросов часто деградируют. Если не помогло, сравните планы запросов проблемных операций и проверьте новые регламентные задания, которые могли появиться в обновлении.
Что важно запомнить
Ускорение базы 1С начинается с замеров и диагностики узкого места. Самый большой эффект дают переход на клиент-серверный режим, регулярное обслуживание СУБД и оптимизация тяжёлых запросов. Любые изменения выполняйте только после резервного копирования и проверяйте результат повторными замерами.