Оптимизация скорости бухгалтерских запросов в 1с с помощью компоненты SPDesigner |
Стандартный бухгалтерский запрос, например, наиболее распространенный запрос тип «Оборотно-сальдовая ведомость по счету» имеет ряд особенностей, в силу которых скорость его выполнения зачастую зависит от качественно-количественных характеристик базы данных, и зачастую он не оптимален. Говоря об оптимальности, имеется в виду в первую очередь план выполнения запроса, затрачиваемое на обработку процессорное время, время выполнения, скорость, количество логических чтений. Простейший пример: два запроса могут выполняться одинаковое количество времени, но при этом потреблять разное количество ресурсов процессора и памяти. Если оперировать терминами MS-SQL профайлера, то это такие показатели как: CPU, Duration, Reads, где CPU – суммарно затраченное процессорное время в миллисекундах, Duration – время выполнения запроса, Reads – количество логических операций чтения. При прочих равных условиях следует стремиться к уменьшению значений каждого из этих показателей.
В нашем продукте SPDesigner мы представили квинтэссенцию нашего опыта по оптимизации запросов для бухгалтерских баз данных. Путем несложных манипуляций программист может использовать ВК для автоматической оптимизации имеющихся в конфигурации запросов. Для этого требуется расставить несколько дополнительных конструкций в коде существующих запросов. При этом вмешательство в конфигурацию будет минимальным.
Преимущества такого подхода:
Пример оптимизации.
Ниже представлен пример оптимизации запроса с указанием одиночного фильтра по двум субконто. Синим цветом на рисунке выделены пары запросов. Первая пара – работа 1С в стандартном режиме, вторая пара – режим перехвата и автоматической оптимизации. Как можно видеть на рисунке, суммарное время выполнения второй пары запросов более чем в два раза ниже, чем время выполнения запросов первой пары (неоптимизированных).
Ниже представлен пример кода, который потребовался для интеграции компоненты в стандартный отчет из типовой бухгалтерской конфигурации «оборотно-сальдовая ведомость по счету». Как можно видеть, интеграция совсем не сложная.
Эффективность оптимизации бухгалтерских запросов по сравнению со стандартным запросом 1С. Эффективность растет по мере увеличения критерия фильтрации запроса. На запросах без фильтра оптимизация дает выигрыш в процентах, на запросах с фильтрами в виде единичного значения эффективность значительно возрастает, выигрыш может быть в несколько раз. Наибольшая эффективность по сравнению со стандартным запросом 1С достигается при использовании фильтров по списку значений и при больших справочниках. При использовании все той же "оборотно-сальдовой ведомости по счету", с указанием фильтров по двум большим группам товаров и контрагентов разница в производительности получилась еще больше.
На скриншоте время указано в миллисекундах, замер производился с помощью "
_GetPerformanceCounter(); ". Замер распространялся только на время выполнения метода "Ит . ВыполнитьЗапрос ( Дата1 , Дата2 , Счет ); ". Как можно видеть в обычном режиме запрос работал 1793 секунды, или 29 минут 53 секунды. В режиме оптимизации запрос отработал за 39 секунд. Разница - в 46 раз!Ниже представлен скриншот трассы из профайлера:
На скриншоте красным цветом выделены запросы без оптимизации, зеленым - с оптимизацией. Следует обратить внимание не только на время выполнения запросов, но, в частности, и на показатель READS. Количество чтений базы данных для оптимизированного запроса значительно меньше, чем для неоптимизированного.
По результатам одного из внедрений на одном из примеров была достигнута эффективность оптимизации в виде сокращения времени выполнения запроса в 100 раз.
Чем больше план счетов, чем больше количество элементов в справочниках, тем выше будет эффективность работы автоматически оптимизированного запроса.
Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|
Статья: Оптимизация скорости бухгалтерских запросов в 1с с помощью компоненты SPDesigner |
Перейти на главную страницу компании "Софтпоинт" |