Переезд на новый сервер часто сопровождается непредвиденными проблемами с производительностью. Если запрос к таблице, который раньше работал быстро, внезапно начинает «зависать» на этапе Выполнить().Выгрузить(), важно проанализировать не только сам SQL-код, но и архитектурные настройки взаимодействия компонентов системы.
Первое, на что стоит обратить внимание — это использование конструкции ВЫБРАТЬ *. В 1С это считается плохой практикой, так как сервер вынужден выгружать все поля, включая тяжелые типы данных, такие как ХранилищеЗначений или неограниченные строки.
Рассмотрим, как изменить подход к написанию кода:
// Вместо неоптимального запроса
Запрос.Текст = \"ВЫБРАТЬ * ИЗ Справочник.Контрагенты\";
// Используйте только необходимые поля
Запрос.Текст = \"ВЫБРАТЬ
Контрагенты.Ссылка,
Контрагенты.Наименование,
Контрагенты.Код
ИЗ Справочник.Контрагенты КАК Контрагенты\";
Если выборка определенного подмножества полей дает существенный прирост, значит, проблема кроется в объемах данных, передаваемых из SQL Server в rphost.
Если запрос в SQL Server Management Studio отрабатывает мгновенно, а в коде 1С «висит», значит, задержка происходит на этапе передачи данных или их обработки рабочим процессом rphost. Проанализируем возможные причины:
rphost: Проверьте в мониторе ресурсов, не уходит ли процесс в своп (ошибки страниц). При большом количестве оперативной памяти (например, 512 ГБ) важно правильно настроить параметры кластера 1С, чтобы рабочие процессы имели доступ к необходимому объему ресурсов.SQL Server и Сервером 1С используется Shared Memory, если они расположены на одной машине.MAXDOP: Для 1С рекомендуется значение 1 или подбор оптимального значения для многоядерных систем. Проверьте параметр Cost Threshold for Parallelism — если он слишком низкий, SQL пытается распараллелить даже простые запросы, что ведет к деградации производительности.После миграции базы данных необходимо выполнить комплекс регламентных процедур. Даже если данные перенесены корректно, план выполнения запросов может быть неоптимальным.
Разберем необходимые действия:
Тестирование и исправление в Конфигураторе, чтобы исключить логические ошибки в структуре таблиц ИБ.Если вы видите ошибки вида Ping direction statistics, это может указывать на проблемы с тайм-аутами при обмене данными между клиентом и сервером. Настройте Технологический журнал для фиксации событий, длительность которых превышает установленный порог (например, 5-10 секунд).
Не используйте SQL Profiler для постоянного мониторинга, так как он сам по себе создает значительную нагрузку. Используйте Extended Events — они позволяют настроить событийный перехват с сохранением XML-планов выполнения запросов, что даст понимание того, на какой операции происходит задержка: чтение данных, сортировка или сериализация объектов.
Для решения проблемы рекомендуем придерживаться следующего плана:
ВЫБРАТЬ * — это позволит снизить нагрузку на сериализацию данных.TempDB — убедитесь, что файлы данных распределены по ядрам процессора и размещены на быстрых SSD-дисках.rphost — мониторьте счетчики производительности процесса в момент выполнения зависающего кода.ХранилищемЗначений. Если проблема исчезла, значит, 1С тратит ресурсы на разбор этих типов данных.Помните, что при смене оборудования часто требуется «тюнинг» самой СУБД под конкретную архитектуру процессоров и объемы оперативной памяти. Работайте в связке с системным администратором, фокусируясь на счетчиках производительности дисковой подсистемы и ошибках страниц памяти в момент выполнения запроса.