Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) Ускорить проведение документа (число прочтений - 15677 )
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
Ускорить проведение документа
25. Июня 2010 :: 12:35
Печать  
Мне необходимо в БД ПУБ SQL ускорить проведение документа "Реализация продукции". Основной тормоз в процедуре
глСписаниеМПЗРасчетРегистров()

Структура регистров
Регистр "Места хранения"
"Измерения":
ВидМПЗ
МПЗ
МестоХранения
Владелец
Качество
"Ресурсы":
Количество
"Реквизиты": -

Регистр "Партии"
"Измерения":
ВидМПЗ
МПЗ
Партия
МестоХранения
Владелец
Качество
СрокЭксплуатации
Заявка
"Ресурсы":
Количество
Сумма
СуммаНУ
СуммаПР
КоличествоОС
"Реквизиты":
КодОперации
ПрямыеРасходыНУ

Как вариант ускорения нашёл предложение в регистрах по измерению МПЗ установить "Отбор движений" и, т.к. оно не первое в регистрах, "Отбор итогов".
Такое решение имеет негативные моменты? БД большая - 20 Гб. Ведь почему-то же по умолчанию в типовом решении эти флаги отключены.

Как более кардинальный способ - переписать процедуру глСписаниеМПЗРасчетРегистров() на прямые запросы. НО к сожалению я этим навыком не владею и сам написать не могу, а сроки очень сжатые и боюсь досконально разобраться в вопросе не успею. КТо-нибудь из форумчан может помочь в этом вопросе? Сколько такая помощь может стоить?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Ускорить проведение документа
Ответ #1 - 25. Июня 2010 :: 13:02
Печать  
Прошу в ICQ 201216890 - обсудим.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Ускорить проведение документа
Ответ #2 - 25. Июня 2010 :: 13:03
Печать  
Федор в связи с тем что это не конкретно вопрос по Прямым запросам а поиск помощи прошу перенести курилку.
  
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Ускорить проведение документа
Ответ #3 - 25. Июня 2010 :: 18:33
Печать  
посмотри еще эту тему
http://www.1cpp.ru/forum/YaBB.pl?num=1276610073
  
Наверх
wwwICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Ускорить проведение документа
Ответ #4 - 07. Июля 2010 :: 08:56
Печать  
Пожалуй подниму немного тему Улыбка
По итогам обращения автора был проведен комплексный анализ выявивший узкие места.
По итогам проведенных работ автор получил требуемый результат - перепровел за приемлемое время документы.
В то же время сделано было совсем не то о чем говорилось в заглавном посте.
Я просил автора написать отзыв о проведенных работах чтобы тех кто столкнется в будущем с вопросом оптимизации понимал что проблему решать надо комплексно, но автор топика до сих пор не удосужился этого сделать к сожалению.
Отзыв был единственной моей просьбой по итогам работ.
Если кому-то интересно что было и как разрешилось - пишите в ветку я тогда сам напишу. Ну а если это не интересно никому, то пусть данный пост останется маленьким напоминанием об отзывчивости людей просящих помощь.
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ускорить проведение документа
Ответ #5 - 07. Июля 2010 :: 09:18
Печать  
Пишите. Мне интересно.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускорить проведение документа
Ответ #6 - 07. Июля 2010 :: 09:22
Печать  
Тоже с удовольствием почитаю.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Ускорить проведение документа
Ответ #7 - 07. Июля 2010 :: 10:38
Печать  
У автора топика установлен SQL 2000 SP3.
После предварительного общения стало ясно что проблема заключается именно в перепроведении документов за период. Анализ замеров производительности показал что:
1) При проведении документа НЕ НА ТА действительно самым узким местом является расчет регистров при списании МПЗ.
2) При проведении документа НА ТА узким местом оказался модуль взаиморасчетов который проверял на наличие Налога с продаж в документе реализации. Так в цикле использовался вызов функции глНп... (не помню точно) ну и прочие моменты.
Был проведен анализ состояния фрагментации индексов и созданы планы обслуживания (job-ы).
По данным выводам было принято решение об оптимизации участка взаиморасчетов что и было сделано изменением кода.
После данных манипуляций стало ясно, что оптимизация путем перевода на прямые запросы принесет прирост порядка 20-30% при этом основная проблема замедления проведения на SQL 2000 решена не будет. В связи с высокой нагруженностью базы и сроками на реализацию оптимизации в пределах 8 часов было принято решение о выставлении приоритета на внедрение ReconnectNative при перепроведении документов. Была реализована обработка по перепроведению документов со сдвигом ТА в случае непроведения документа на следующий, изменен глобальный модуль для отсутствия курсоров.
Таким образом эффект достигнутый именно комплексом мероприятий по анализу и устранению узких мест привел к требуемому результату - перепроведению базы за время которое для этого отведено. Перевод на прямые запросы расчетов при проведении на ТА дадут в среднем от 20 до 30 % как выше и говорилось, но затраты на внедрение данного решения не соответствуют эффективности полученного результата на текущий момент.
  
Наверх
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Ускорить проведение документа
Ответ #8 - 08. Июля 2010 :: 07:37
Печать  
Ух как ответил здорово Улыбка
а можно вот эту фразу развернуть
Был проведен анализ состояния фрагментации индексов и созданы планы обслуживания (job-ы).
Что делают job-ы при проведении? а то я их только при бекапе использую  Круглые глаза
p.s.
SQL2005
  
Наверх
www  
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Ускорить проведение документа
Ответ #9 - 08. Июля 2010 :: 10:09
Печать  
(8) В переводе на русский в (7) сказано:
1. Поменяли код расчета взаиморасчетов. Полезно, но не совсем то.
2. Поставили в джобах дефрагментацию индексов. Это всегда полезно. Но опять не совсем то.
3. Использовали ReconnectNative. Вот теперь самое то. Улыбка
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Ускорить проведение документа
Ответ #10 - 08. Июля 2010 :: 12:33
Печать  
val писал(а) 08. Июля 2010 :: 10:09:
(8) В переводе на русский в (7) сказано:
1. Поменяли код расчета взаиморасчетов. Полезно, но не совсем то.
2. Поставили в джобах дефрагментацию индексов. Это всегда полезно. Но опять не совсем то.
3. Использовали ReconnectNative. Вот теперь самое то. Улыбка

В корне не согласен. В целом
п.1 принес порядка 15-20% прироста во времени проведения 1 документа
п.2 отжал еще около 10% прироста
п.3 всего-лишь навсего не дал это потерять.
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускорить проведение документа
Ответ #11 - 08. Июля 2010 :: 18:06
Печать  
Не знаю какой это ПУБ, но в Украинском точно сделано тормознуто, там регистры расчитвыются не один раз а построчно (когда то переделывал), можно начать искать в этом направлении.
2 - Посмотреть на таблицу остатков по регистрам, возможно остатки не закрываются и висят где то пересортицы, закрыть ненужные значения.
3 -  Быстрая обработка движений - добавляет в табицу движений регистра (RA) 2 поля "DATE_TIME_IDDOC" и "IDDOCDEF". Не думаю что при расчеие остатков эти поля необходимы
4 - Отбор движений - добавляет индекс к таблице движений по измерению
5 - Отбор итогов добавляет индекс в таблицу итогов по измерению

По поводу индексов - они составные, поэтому если условия в запросе будут с пропусками измерений, тогда помощи от такого индекса не следует ждать.

Ну и как вы сами понимаете индекс занимает место и замедляет запись, т.е. добавление индекса приведет к замедлению закписи в таблицы (что почти незаметно, но если в документе 100 строк и таки документов 1000 в день то разница уже будет заметна).
  
Наверх
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Ускорить проведение документа
Ответ #12 - 14. Января 2011 :: 12:02
Печать  
Ниже запрос из модуля проведения документа. 2 вопроса.
Как его еще можно оптимизировать?
Правильно ли считаются остатки на позицию документа?  Улыбка

---------------------------------------------------------------------

Recordset.УстановитьТекстовыйПараметр("ТекДок",ТекущийДокумент());
     щийДокумент(),0));
     
Если ИтогиАктуальны()=1 Тогда
     ДатаРасч="";
Иначе
     ДатаРасч=":ТекПоз~";
КонецЕсли;
     
Соед="
|INNER JOIN $ДокументСтроки.РасходнаяНакладная as Д ON Д.IDDOC=:ТекДок AND Товар=$Д.Товар
|";
     
ТекстЗапроса="
|SELECT
|$Док.Товар as [Товар $Справочник.Товары],
|Sum($Док.Количество) as [Кол],
|Sum(Рег.КоличествоОстаток) as [Ост]
|FROM
|$ДокументСтроки.РасходнаяНакладная as Док
|LEFT JOIN      
личество)) as Рег ON $Док.Товар=Рег.Товар
|WHERE
|Док.IDDOC=:ТекДок
|GROUP BY
|$Док.Товар
|";
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускорить проведение документа
Ответ #13 - 14. Января 2011 :: 17:13
Печать  
Neo писал(а) 14. Января 2011 :: 12:02:
Как его еще можно оптимизировать?
Правильно ли считаются остатки на позицию документа?  Улыбка

Либо можно оптимизировать, либо остатки считаются неправильно, в зависимости от того, уникальны ли $Док.Товар в пределах документа. Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Ускорить проведение документа
Ответ #14 - 14. Января 2011 :: 20:54
Печать  
Уникальны. Писал запрос с учетом этого  Улыбка
« Последняя редакция: 15. Января 2011 :: 06:43 - Neo »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать