К статье
Практический материал

Администрирование · 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. 1
    Сделайте резервную копию базы
  2. 2
    Выполните обновление статистики средствами СУБД
  3. 3
    Перестройте или реорганизуйте индексы
  4. 4
    Удалите помеченные объекты и очистите служебные таблицы
  5. 5
    Измерьте время типовых операций и сравните с исходными значениями

Оптимизация конфигурации и запросов

Если инфраструктура в порядке, а отдельные операции всё равно медленные — причина в коде. Типичные проблемы: запросы в цикле, получение данных через точку от ссылки («разыменование» целыми цепочками), отсутствие индексов по полям отборов, чтение всей таблицы вместо выборки нужных записей.

Замер производительности в конфигураторе покажет, какие строки кода занимают больше всего времени. Для найденных запросов анализируйте план выполнения на стороне СУБД: полное сканирование больших таблиц (Table Scan / Seq Scan) вместо поиска по индексу — прямой сигнал к добавлению индекса или переписыванию условий запроса.

В типовых конфигурациях большую часть проблем решает штатная настройка: включение управляемых блокировок, настройка дат запрета изменения данных, отложенное проведение, регламентное сокращение периода расчёта итогов. Глубокая оптимизация кода требует разработчика — не меняйте типовые модули без понимания последствий для обновлений.

bsl
// Плохо: запрос в цикле
Для Каждого Строка Из ТаблицаТоваров Цикл
    Запрос = Новый Запрос("ВЫБРАТЬ Цена ИЗ РегистрСведений.Цены ГДЕ Номенклатура = &Ном");
    Запрос.УстановитьПараметр("Ном", Строка.Номенклатура);
    // ...
КонецЦикла;
// Хорошо: один запрос по всей таблице через временную таблицу или соединение

Сокращение объёма данных

Чем больше таблицы, тем дороже любые операции с ними. Регулярно удаляйте помеченные объекты, сворачивайте старые периоды в учётных регистрах, ограничивайте сроки хранения версий объектов и истории обменов данными.

Для очень больших баз рассмотрите свёртку итогов за закрытые периоды и перенос архивных данных в отдельную базу. Это трудоёмкая операция, требующая тестирования, но для многолетних баз она часто даёт эффект, недостижимый никакими настройками.

Типичные ошибки
01
Менять настройки СУБД без замеров — невозможно понять, что помогло, а что навредило
02
Делать тестирование и исправление на рабочей файловой базе без копии — риск повреждения данных
03
Игнорировать блокировки — оптимизация железа не поможет при неправильном режиме блокировок
04
Добавлять индексы наугад — лишние индексы замедляют запись и проведение документов
05
Забывать про регламентные задания — они могут выполняться в рабочее время и отбирать ресурсы

Как проверить результат

После каждого этапа изменений повторяйте те же замеры, что делали в начале: время проведения типового документа, формирования отчёта, открытия журнала. Сравнение «стало лучше на глаз» ненадёжно — субъективные ощущения сильно зависят от текущей загрузки.

Контролируйте также и обратные эффекты: добавление индексов не должно заметно замедлить проведение документов, а агрессивная очистка данных — нарушить отчётность за прошлые периоды.

Контрольные точки

Как проверить результат

Время проведения документа
Норма

Сократилось по сравнению с исходным замером

Тревожный признак

Не изменилось или выросло

План тяжёлого запроса
Норма

Используются индексы (Index Seek / Index Scan)

Тревожный признак

Полное сканирование больших таблиц

Блокировки в часы пик
Норма

Кратковременные, быстро снимаются

Тревожный признак

Длинные цепочки ожиданий, взаимоблокировки

Свободная память сервера
Норма

Есть запас, нет активного свопинга

Тревожный признак

Память исчерпана, идёт запись в файл подкачки

Частые вопросы

Сколько оперативной памяти нужно серверу 1С?

Универсальной цифры нет: требования зависят от размера базы, числа пользователей и нагрузки. Практический ориентир — памяти должно хватать, чтобы СУБД могла кэшировать активно используемые данные, а у ОС и сервера 1С оставался запас. Признак нехватки — постоянный свопинг и высокая дисковая активность при обычных операциях.

Поможет ли SSD, если база тормозит?

Да, если узкое место — дисковая подсистема: перенос файлов базы и журнала транзакций на SSD часто даёт заметное ускорение. Но если проблема в неоптимальных запросах или файловом режиме по сети, эффект будет ограниченным.

Как часто нужно делать реиндексацию?

Зависит от интенсивности изменения данных. При активной работе — еженедельное перестроение или реорганизация индексов и более частое обновление статистики. Точную периодичность подбирают по динамике фрагментации и времени выполнения типовых запросов.

Можно ли ускорить файловую базу без перехода на SQL?

Частично: разместить базу локально на быстром диске, а не на сетевом ресурсе, уменьшить число одновременных пользователей, регулярно выполнять реиндексацию через тестирование и исправление. Но при росте нагрузки эти меры быстро упираются в ограничения файловой архитектуры.

Опасно ли удалять помеченные объекты?

Сама операция штатная и безопасная, но удалённые данные восстановить нельзя. Перед удалением убедитесь, что есть резервная копия, и не удаляйте объекты, которые могут понадобиться для отчётности или аудита за прошлые периоды.

Что делать, если после обновления конфигурации база стала медленнее?

Сначала выполните обновление статистики и перестроение индексов — после массовых изменения данных планы запросов часто деградируют. Если не помогло, сравните планы запросов проблемных операций и проверьте новые регламентные задания, которые могли появиться в обновлении.

Итог

Что важно запомнить

Ускорение базы 1С начинается с замеров и диагностики узкого места. Самый большой эффект дают переход на клиент-серверный режим, регулярное обслуживание СУБД и оптимизация тяжёлых запросов. Любые изменения выполняйте только после резервного копирования и проверяйте результат повторными замерами.