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

Администрирование · 12 мин

Почему тормозит база 1С и что с этим делать

Разбираем, почему тормозит база 1С: типичные причины медленной работы, диагностика узких мест, настройка СУБД, индексов и сервера, практические шаги оптимизации.

Медленная работа базы 1С почти никогда не возникает «сама по себе». За замедлением всегда стоит конкретная причина: вырос объём данных, не хватает ресурсов сервера, запросы обходятся без индексов, устарели статистики СУБД или в конфигурацию внесены доработки с неоптимальным кодом. Проблема в том, что симптомы у разных причин похожи: документы проводятся по несколько секунд, отчёты формируются минутами, интерфейс «подвисает» при открытии списков.

Чтобы ускорить базу, нужно сначала локализовать узкое место, а уже потом применять меры. Случайные действия — «поставим сервер помощнее» или «обновим платформу» — часто не дают результата, потому что не попадают в реальную причину. Например, добавление оперативной памяти бесполезно, если тормоза вызваны запросом с полным сканированием таблицы на несколько миллионов записей.

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

Как понять, где именно теряется время

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

Базовый инструмент диагностики — замер производительности в конфигураторе (Отладка → Замер производительности). Он показывает, какие строки кода и запросы занимают больше всего времени при выполнении конкретной операции, например при проведении документа. Для клиент-серверного варианта полезны также технологический журнал платформы и средства мониторинга самой СУБД: в MS SQL Server это план выполнения запроса и динамические представления, в PostgreSQL — представление pg_stat_statements.

Тормозит у одного пользователяПроблема на клиенте

Антивирус, сеть, мощность ПК, версия платформы

Тормозят все операцииПроблема на сервере или в СУБД

Загрузка CPU, RAM, дисковой подсистемы, блокировки

Тормозит конкретная операцияПроблема в коде или запросе

Замер производительности, план запроса, индексы

Тормоза в часы пикКонкуренция за ресурсы

Блокировки, регламентные задания, нехватка памяти

Рост объёма данных и его последствия

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

Признаки этой причины: постепенное замедление за месяцы, увеличение времени формирования отчётов за большие периоды, долгое проведение документов, которые обращаются к большим регистрам. Проверить можно размер таблиц средствами СУБД — в MS SQL Server это отчёт «Disk Usage by Table», в PostgreSQL — запрос к pg_total_relation_size.

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

Серверные ресурсы: память, диски, процессор

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

В клиент-серверном варианте типичные дефициты — оперативная память и дисковая подсистема. СУБД должна держать в памяти рабочий набор данных: если буферного пула не хватает, каждый запрос идёт к диску. Проверьте, сколько памяти реально выделено SQL-серверу и нет ли на нём посторонних приложений, отъедающих ресурсы. Диски с данными и журналом транзакций желательно размещать на быстрых SSD, причём журнал — отдельно от данных.

Отдельный частый случай — антивирус на сервере СУБД, который проверяет файлы данных при каждом обращении. Каталоги базы данных, журнала транзакций и временных файлов SQL-сервера нужно добавить в исключения антивируса, иначе потери производительности могут быть очень заметными.

Файловый или клиент-серверный вариант

Файловый вариант

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

Клиент-серверный (MS SQL, PostgreSQL)

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

Настройка СУБД: индексы, статистика, регламентные операции

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

Минимальный регламент обслуживания: регулярное обновление статистики, перестроение или реорганизация индексов по мере фрагментации, контроль размера и модели восстановления журнала транзакций. В MS SQL Server для баз 1С обычно рекомендуется простая модель восстановления (если нет иных требований к резервному копированию) и включённый автоинкремент файлов с разумным шагом. Эти операции выполняются штатными средствами СУБД или планами обслуживания.

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

Базовый порядок обслуживания СУБД
  1. 1
    Сделайте полную резервную копию базы
  2. 2
    Проверьте фрагментацию индексов по крупным таблицам
  3. 3
    Выполните реорганизацию или перестроение индексов в нерабочее время
  4. 4
    Обновите статистику по всем таблицам
  5. 5
    Проверьте настройки журнала транзакций и модель восстановления
  6. 6
    Повторите проблемную операцию и сравните время выполнения

Блокировки и конкуренция пользователей

Если база «встаёт» периодически, особенно в часы активной работы, вероятная причина — блокировки. Один пользователь проводит крупный документ или запускается тяжёлое регламентное задание, а остальные ждут освобождения записей. Внешне это выглядит как зависание: операция не выполняется и не выдаёт ошибку.

Диагностируется это средствами СУБД: просмотр активных блокировок и цепочек ожидания. В MS SQL Server используются представления sys.dm_tran_locks и sys.dm_os_waiting_tasks, в PostgreSQL — pg_locks и pg_stat_activity. Если видны длинные цепочки ожиданий, ищите источник: часто это регламентные задания, запущенные днём, обмены данными или отчёты, которые пользователи формируют в монопольном по ресурсам режиме.

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

Прикладные причины: запросы, доработки, интерфейс

Значительная часть проблем производительности находится в прикладном коде, особенно после доработок конфигурации. Типичные ошибки: запросы в цикле, получение данных через точку от ссылки («разыменование»), отсутствие отборов при чтении больших таблиц, использование виртуальных таблиц без параметров, обращения к СУБД внутри обработчиков формы.

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

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

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

Проверка результата и когда нужен специалист

Любую оптимизацию нужно завершать измерением: повторите операцию, которая тормозила, и сравните время до и после. Хорошая практика — зафиксировать исходные показатели: время проведения типового документа, время формирования ключевого отчёта, время открытия основных списков. Без цифр «до» невозможно понять, помогло ли изменение.

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

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

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

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

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

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

Не изменилось или выросло — узкое место не найдено

Загрузка дисков сервера СУБД
Норма

Нет постоянной очереди к диску в часы работы

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

Диск загружен на 100% — не хватает памяти или дисковой производительности

Активные блокировки в часы пик
Норма

Короткие, быстро завершающиеся ожидания

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

Длинные цепочки ожиданий на одних и тех же таблицах

План проблемного запроса
Норма

Используется поиск по индексу

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

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

Итог

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

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

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

С чего начать, если база начала тормозить внезапно, а не постепенно?

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

Поможет ли переход на SSD, если база работает в файловом варианте по сети?

Частично — SSD ускорит обращения к файлу, но не снимет главное ограничение файлового режима: конкурентный доступ и сетевые задержки. Если пользователей несколько и база активно растёт, более действенное решение — переход на клиент-серверный вариант, где СУБД управляет доступом к данным централизованно.

Как часто нужно обновлять статистику и перестраивать индексы?

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

Можно ли ускорить отчёты, которые формируются по несколько минут?

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

Опасно ли самостоятельно добавлять индексы в базу 1С?

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

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

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