Разработка и оптимизация запросов в 1С:Предприятие. 1С оптимизация кода


Разработка и оптимизация запросов в 1С 8.2, 8.3

С чего начинается анализ возможных причин сбоев?

Мероприятия по поиску возможных причин перегрузки системы следует искать не в хаотическом порядке, а постепенно, переходя от одного блока к другому, применяя систематический подход. Тогда в 1С оптимизация запросов окажется эффективной.

Вот наиболее частые проблемные места, ведущие к снижению скорости работы СУБД:

Рассмотрим некоторые из перечисленных.

Обработка подзапросов в запросах

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

Неправильный вариант

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

Правильный вариант

Важно! Временные таблицы появились в версиях 1С 8.2 и 8.3, поэтому если вы до сих пор используете 8.0, то мы рекомендуем обновиться, потому что появится не только эта возможность, но и много других полезных вещиц.

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

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

Если запрос неправильно сформирован, имеется в виду с использованием нескольких подзапросов, то оптимизатор сервера, используемый в конкретной СУБД, может неправильно отрабатывать его.

То есть он может запутаться в нескольких соединениях. Но если соединения сформируются в 2 таблицы, то оптимизатор сможет достаточно быстро выяснить объем выборок. Но в случае если одна из выборок содержит подзапрос, то будет затруднительно сразу определить количество возвращаемых записей.

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

Логическое ИЛИ

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

  1. В секции ГДЕ.

    Для правильного составления крайне не рекомендуется пользоваться операцией ИЛИ в секциях ГДЕ. Если это правило не соблюдено, то СУБД не проиндексирует ее, а просто просканирует.

    Что не даст желаемого результата. А так как она не получит требуемых данных, то произойдет блокировка. Лучше его разбить на несколько отдельных, а после, сконфигурировать их.

    Пример:

    Запрос ВЫБРАТЬ… ИЗ … КАК … ГДЕ …1 ИЛИ 2 луче заменить на блок:

    ВЫБРАТЬ … ИЗ … КАК … ГДЕ …1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ … ИЗ … КАК … ГДЕ …2
  2. Несколько ролей с RLS на одного пользователя.

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

Условия соединения с ИЛИ

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

Как обрабатывать виртуальные таблицы

СУБД иногда неправильно работает в случаях неправильного соединения записей с виртуальными таблицами. Решение данной проблемы кроется во вложении виртуальной таблицы во временную. Не забыть выполнить индексацию соединенных полей запроса ВТ. В результате система создаст подзапрос для выборки. Но возникнет новая проблема, подобно случаю обработки запросов с подзапросами.

Отборы в неиндексируемых полях

Качественная оптимизация запросов в 1С 8.2 исключает использование запросов по неиндексируемым полям. Такие конструкции являются полным противоречием правил оптимизации. Для решения проблемы лучше непосредственно в запросе реализовать отбор по неиндексируемым полям. Если была использована ВТ, то лучше проиндексировать именно поля соединения.

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

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

Работа с фильтрами данных в таблицах

Правильной считается оптимизация кода 1С только при построении отбора не используя секцию ГДЕ. Ее наличие приведет к получению системой всех данных таблицы и после выберет нужные. Именно поэтому процесс накладывания фильтров на реквизиты должен выполняться исключительно с использованием параметров временной таблицы.

Как получать значения полей составных типов

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

Для ускорения процесс обработки данных СУБД, рекомендуется сократить часть записей или разделить их. Можно добавить данных в реквизиты.

Евгений Моисеенко. Оптимизация запросов 1С:Предприятие – от теории к практике

arprime.ru

Сертификация «оптимизация кода для повышения производительности 1С» | Gilev.ru

Вы часто слышали от программистов «у меня нет времени сдавать на сертификат».

Данная сертификация позволяет сдать экзамен в любое время. Можно подстроится под удобное для Вас время.

Вы часто слышали от программистов «у меня нет времени готовится к экзамену».

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

Страхи программиста «этот сертификат надо потом переводить с фирмы на фирму, если будут менять работ». Данный экзамен фиксирует квалификацию сдающего человека и информация о факте сдаче находится в публичном доступе на сайте gilev.ru. Ничего с фирмы на фирму переводить не надо.

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

Страхи работодателя «сертификат может устареть». Экзамен оценивает опыт, который со временем надо обновлять. Наша сертификации подразумевает подразумевает обновление содержания экзамена с учетом изменений «в жизни». По новой версии экзамена сертификат отражает «новые навыки», который экзаменуемый продемонстрировал.

Сомнения фирмы-франчайзи «зачем моему программисту сертификат?». Экзамен позволяет:

 

Зачем программисту сертификат? Если устраиваться на работу придут два человека, один с сертификатом, а другой без сертификата, у кого больше шансов? Если Вы хотите побольше зарплату, как продемонстрировать работодателю Вашу возросшую квалификацию на текущем месте работы — правильно сдать экзамен и продемонстрировать результат работодателю! Наш сертификат не надо «выкупать у фирмы-франчайзи» в случае перехода на новое место работы. Доступ сдачи через интернет, не надо никуда ехать (для гарантированности достоверности требуется веб-камера). Также есть возможность сдачи в выделенном помещении.

А главное, вы можете по своему желанию заявить возможность найти информацию на нашем сайте gilev.ru информацию работодателем или сделать ее доступной приватно по «паролю», который вы сообщите конкретному лицу.

Цена сдачи экзамена на ноябрь — 7000 руб.

Записаться на экзамен [email protected]

 

 

 

www.gilev.ru

Аренда 1С сервера - хостинг 1С

Фирма «1С» рекомендует для оценки производитель­ности системы использовать методику APDEX (Application Performаnce Index) в которой предполагается выполнение определенных шагов.

Если у Вас медленно работает 1С, мы можем оптимизировать производительность 1С, подробности обращайтесь в раздел Контакты.

Рассмотрим эти шаги.

Шаг 1. Определить список «ключевых операций»

К ключевым операциям относим: критичные для бизнес-про­цессов предприятия, имеются жалобы на производитель­ность этих операций, выполняется большим количеством пользователей. Список ключевых операций необходимо со­гласовывать с заказчиком (пользователем). Примеры ключевой операции:

Количество ключевых операций не ограничено, но обыч­но их выбирают около пятнадцати.

Шаг 2. Определяем приоритет у каждой операции

Необходимо отсортировать операции по убыванию их важ­ности.

Шаг 3. Определяем целевое время выполнения по каждой операции

Целевое время — максимальное время исполнения опера­ции, при котором она считается выполненной за приемле­мое время и удовлетворяет заказчика (пользователя).

Шаг 4. Получаем данные по времени выполнения всех ключевых операций в реальной системе

Здесь необходимо собрать фактические данные по рабо­чей системе, чтобы сделать оценку ее производительности. Удобным способом получения длительности выполнения клю­чевых операций и их интегральных оценок по шкале APDEX является встраивание подсистемы «Оценка производитель­ности» из состава «Библиотеки стандартных подсистем».

Шаг 5. Вычисляем значение индекса производительности для каждой ключевой операции

Индекс вычисляется по формуле:

 (NS + NT/2)/N

где:

В таблице 1 показано, каким количественным значениям показателя APDEX соответствуют качественные значения.

Значение Оценка
от до
0.00 0.49 Неприем

1c-servers.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта