Почему 1С тормозит и почему новый сервер обычно не помогает
Первое - не покупать новый сервер. В восьми случаях из десяти причина медленной работы 1С не в железе, а в запросах, которые читают миллионы лишних строк, в отсутствующих индексах, в неактуальной статистике СУБД или в блокировках между пользователями. Всё это диагностируется инструментально: технологический журнал 1С и планы запросов SQL показывают виновника с точностью до строки кода.
Как мы ищем причину
- Технологический журнал 1С - настраиваем сбор событий по длительным запросам и ожиданиям на блокировках; получаем точную картину, какие операции и чей код съедают время.
- Планы запросов SQL - смотрим, как СУБД на самом деле выполняет тяжёлые запросы: сканирования вместо поиска по индексу, лишние соединения, неоптимальные вложенные запросы.
- Статистика ожиданий СУБД - определяем, во что упирается сервер: диски, процессор, блокировки, память.
- Замеры АПДЕКС по ключевым операциям - фиксируем скорость глазами пользователя, а не “в среднем по больнице”.
Первый шаг с техжурналом можно сделать и своими силами: настроить сбор, разобрать события и выгрузить их для нейросети помогает обработка разбора технологического журнала.
Типовые находки
За годы работы список “виновников” повторяется: запросы в цикле, соединения с виртуальными таблицами без отборов, получение остатков внутри транзакции проведения, отборы по неиндексированным полям, устаревшая статистика после массовых загрузок, избыточные блокировки в самописном коде. Почти всё лечится без замены железа и без перехода на новую конфигурацию.
Свежие результаты из боевых проектов
- Список чеков под кассиром: 25 секунд → мгновенно (505 410 → 4 логических чтения) - индексы под кассовые операции плюс разбор механизма разграничения доступа.
- Шесть тяжёлых управленческих отчётов: −22…−42 % времени - при полностью идентичных данных: результат “до” и “после” сверялся контрольной суммой SHA-256, не “на глаз”.
- “Вечерние зависания касс”: блокировок оказалось ноль - тормозил агрессивный параллелизм SQL на 48-ядерном сервере (заводские cost threshold = 5, MAXDOP = 0). Две настройки - и пик перестал быть лотереей. Классический пример, почему сначала измеряют, а потом покупают железо.
- Документ, который “не проводился” 2 минуты → 17 секунд - запрос остатков в цикле по каждой строке переписан на один set-based запрос.
- Часть отчётов после разбора оставлена без изменений - узкое место было не в запросе, и переписывание не дало бы выигрыша. Не тратить ваш бюджет на то, что не ускорится, - тоже результат.
Подробный разбор самого крупного проекта - в кейсе “Обрезка базы 4,2 ТБ → 105 ГБ”.
Ускорение 1С на сервере SQL
Отдельный пласт - настройка СУБД под 1С: параметры памяти и параллелизма, tempdb, автообновление статистики, обслуживание индексов. Типовые установки “по умолчанию” рассчитаны на абстрактную нагрузку, а не на профиль 1С. Настраиваем и MS SQL, и PostgreSQL - включая миграции с одного на другой.