Методы повышения производительности 1C на MS SQL

Для сохранения целостности структуры баз данных и обеспечения нормальной производительности необходимо проводить периодическое обслуживание. В этой статье рассмотрим какие задания по обслуживанию необходимо выполнять для баз данных 1С Предприятия, размещенных в MS SQL.

Зачем оптимизировать работу MySQL

  • Увеличение скорости обработки и выполнения запросов. Скорость работы сайта прямо пропорционально зависит от времени обработки и выполнения SQL-запроса к базе данных, которое должно быть минимальным.
  • Предотвращение перегрузки сервера. При перегрузке сервера работа web-ресурса или приложения будет нестабильной. Хостер может заблокировать ресурс, чтобы последний не нарушал работу всего сервера, на котором также работают и другие сайты.
  • Уменьшение времени ожидания загрузки web-страницы. Когда идет огромное количество SQL-запросов к базе данных, происходит существенное замедление работы сайта, что недопустимо для коммерческого или представительского интернет-ресурса.
  • Экономия ресурсов хостинга. Если MySQL не оптимизирована, то происходит значительный перерасход использования ресурсов сервера (процессорного времени, оперативной памяти). На этом основании хостер имеет право заблокировать работу ресурса.
  • Возможность масштабировать ресурс. При расширении сайта будет невозможно обеспечить хорошее качество его работы. Например, арендатор VPS загрузил на сервер интернет-магазин, в котором 100 видов товаров. Через некоторое время бизнес расширяется и появляется возможность предложить потребителю 10000 разновидностей. После загрузки и доработки интернет-магазин начинает работать медленно, постоянно происходят ошибки при помещении товаров в корзину и т. д.
Зачем оптимизировать работу MySQL

Какие ресурсы желательно оптимизировать

Очистка устаревших бэкапов.

Для очистки устаревших бэкапов баз 1С Предприятия в MS SQL выбираем на панели элементов плана обслуживания Задачу «Очистка после обслуживания».

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

Очистка устаревших бэкапов.

Перетаскиваем задачу с Панели элементов в план и задаем такие настройки:

  • Удалить файлы следующего типа: Файлы резервных копий;
  • Удалить из папки файлы с определенным расширением: указываем папку хранения бэкапов баз 1С;
  • Включить вложенные папки первого уровня: отмечаем галочкой, потому-что у нас для бэкапов баз создаются отдельные папки
  • Удалить файлы на основе возраста во время выполнения задачи: здесь все ограничивается лишь вашими потребностями и объемом жесткого диска, а мне достаточно 4 недель.
Читайте также:  Ошибка 0x80240037 при установке обновлений Windows 7

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

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

Очистка устаревших бэкапов.

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

Переходим к очень важному и ответственному пункту: Перестроение индекса и обновление статистики.

Анализ проблем производительности и оптимизация системы

Для данной задачи так же нужно продолжить пользоваться программой 1С Центр Управление Производительностью (ЦУП).

Для анализа необходимо включить режим отслеживания на продолжительный период времени следующих показателей:

  • анализ запросов
  • анализ ожидания на блокировках
  • анализ взаимоблокировок

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

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

Это будет вам интересно:

  • Анализ производительности запросов на уровне СУБД
  • Методика оценки производительности APDEX в 1С
  • Замер производительности в отладке 1С 8.3

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Читайте также:  Для чего и где применяется SSL-сертификат?

Шаг 3

В случае, если первые шаги не принесли никакого результата, то следующим вариантом, требующим проверки является проверка параметра Degree of Parallelism (DOP).

Если кратко, то это настройка отвечает за то, на сколько ядер может быть распараллелен запрос. Чем сложнее запрос, тем выгоднее его распараллеливать на большее число ядер процессора. С другой стороны, когда большая часть запросов простые (а именно так в большинстве своем в системе DIRECTUM), то необходимости в распараллеливании нет. Стоит учитывать, что при установке DOP=1, тяжелые запросы будут выполняться медленнее.

Изменение данной настройки не требует перезапуска SQL-сервера.

Оценить влияние можно так:

  • Сравнить среднее значение загрузки CPU, например, за день до изменения и после;
  • Оценить задержки вида CXPACKET в динамическом представлении dm_os_wait_stats, например, запросом вида:

select top 25 * from _os_wait_stats order by wait_time_ms desc

Наличие в топе CXPACKET как раз и будет говорить о проблемах с параметром DOP.

Эмпирически можно подобрать наиболее подходящее значение DOP для каждой конкретной системы.