Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Выполнение запросов в обработке проведения и в общем режиме. (число прочтений - 4729 )
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Выполнение запросов в обработке проведения и в общем режиме.
24. Июля 2009 :: 07:12
Печать  
Простой запрос по с использованием виртуальной таблицы.
В обработке проведения выполняется 10-20 секунд.
Вытащил текст запроса запустил в _1СQA - 0,500 сек. О_о
Ума не приложу чего делать. уже порядка 70 пользователей, транзакции слегка достают...

вот эти запросы:
Код
Выбрать все
SELECT
	  регSQL.Фирма as  [Фирма $Справочник.Фирмы]
	,  регSQL.Товар as  [Товар $Справочник.Номенклатура]
	,  регSQL.ПоСчету as  [ПоСчету $Документ]
	,  регSQL.Договор as  [Договор $Справочник.Договора]
	,  регSQL.РезервТовараОстаток as РезервТовара
FROM  
	$РегистрОстатки.РезервыТоваров(
		:ВыбДата~,
		,
 		товар IN (SELECT val FROM #Выбтовар)  AND
		фирма = $ПустойИД, (Фирма,Товар,ПоСчету,Договор), (РезервТовара) ) as регSQL
ORDER BY
		регSQL.Фирма, регSQL.Товар, регSQL.ПоСчету, регSQL.Договор			  


-- Второй запрос.

SELECT
	  регSQL.Товар as  [Товар $Справочник.Номенклатура]
	,  регSQL.Фирма as  [Фирма $Справочник.Фирмы]
	,  регSQL.ОстатокТовараОстаток as ОстатокТовара
FROM  
	$РегистрОстатки.ОстаткиТоваров(
		:ВыбДата~,
		,
 		товар IN (SELECT val FROM #Выбтовар)  AND
		фирма = $ПустойИД AND
		склад IN (SELECT val FROM #Выбсклад) , (Товар,Фирма), (ОстатокТовара) ) as регSQL
ORDER BY
		регSQL.Товар, регSQL.Фирма					     


Колво элементов в фильтре:
Товаров: 83
Складов: 14
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #1 - 24. Июля 2009 :: 07:34
Печать  
для начала я бы сравнил планы выполнения этого запроса с активной транзакцией и без.
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #2 - 24. Июля 2009 :: 07:37
Печать  
trad писал(а) 24. Июля 2009 :: 07:34:
для начала я бы сравнил планы выполнения этого запроса с активной транзакцией и без.

ОК. Буду смотреть.
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #3 - 24. Июля 2009 :: 09:38
Печать  
Блин, надо сделать в 1СQA
заготовочку запроса для MS QA, а то что-то 1СQA при попытке отобразить план вылетает нафиг с криком о недопустимом состоянии курсора. а вместе с ним и 1С...
  
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #4 - 24. Июля 2009 :: 09:51
Печать  
ВТ в 1С++ так устроены, что 1CQA план запроса с ВТ не построит. Можно его построить по результату отладки.

Вот это влиять не может?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #5 - 24. Июля 2009 :: 10:45
Печать  
Вот такой план получается:
ПС. Честно говоря первый раз вступаю на тропу такой глубокой оптимизации. Раньще обходился просто написанием прямого запроса и баста Улыбка
  

PlanZaprosa.txt ( 7 KB | Загрузки )
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #6 - 24. Июля 2009 :: 11:01
Печать  
это план быстрого или медленного выполнения?
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #7 - 24. Июля 2009 :: 11:05
Печать  
trad писал(а) 24. Июля 2009 :: 11:01:
это план быстрого или медленного выполнения?

медленного.
причем удивительно - получил этот запрос из 1CQA (с небольшой доработкой), поместил в QA и там оно блин показало очень фиговый дюрайшион...
Прилагаю измененный _1CQA.ert
  

_1CQA.ert ( 240 KB | Загрузки )
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #8 - 24. Июля 2009 :: 11:18
Печать  
мдаа...
насколько могу судить, план совсем кривой Печаль

предполагаю две возможные причины:
1) плохая статистика таблиц ra620 и/или _1sjourn.
желательно ее обновить:
use s2006_office
update statistics ra620 with fullscan
update statistics _1sjourn with fullscan

2) оптимизатор применил "Parallelism".
я скептически отношусь к нему (по крайней мере в sql2000).
на моей практике когда я сталкивался с паралл-измом, то ни к чему хорошему в при построении планов это не приводило. в итоге я его отключил.

для начала попробуй 1)
  

1&&2&&3
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #9 - 24. Июля 2009 :: 11:24
Печать  
А ВыбТовар это временная таблица или табличная переменная? Просто в плане фигурирует @tabl_2.
Когда-то были подобные тормоза связанные с распараллеливанием запроса и блокировой PK на временной таблице.
Надо бы посмотреть какие блокировки висят во время выполнения медленного запроса
Можно попробовать дописать option(max dop 1) в конец запроса
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #10 - 24. Июля 2009 :: 11:29
Печать  
trad писал(а) 24. Июля 2009 :: 11:18:
мдаа...
насколько могу судить, план совсем кривой Печаль

Ну для начала сделал вот что:

  

Q703.PNG ( 16 KB | Загрузки )
Q703.PNG
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #11 - 24. Июля 2009 :: 11:32
Печать  
Ещё попробуй заменить IN на INNER JOIN.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #12 - 24. Июля 2009 :: 11:34
Печать  
alexdd писал(а) 24. Июля 2009 :: 11:24:
А ВыбТовар это временная таблица или табличная переменная? Просто в плане фигурирует @tabl_2.

  

Q703_2.PNG ( 34 KB | Загрузки )
Q703_2.PNG
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #13 - 24. Июля 2009 :: 11:40
Печать  
berezdetsky писал(а) 24. Июля 2009 :: 11:32:
Ещё попробуй заменить IN на INNER JOIN.

где?
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #14 - 24. Июля 2009 :: 11:46
Печать  
trdm писал(а) 24. Июля 2009 :: 11:40:
berezdetsky писал(а) 24. Июля 2009 :: 11:32:
Ещё попробуй заменить IN на INNER JOIN.

где?

$РегистрОстатки.РезервыТоваров(
           :ВыбДата~,
join #Выбтовар on #Выбтовар.val = товар
           ,фирма = $ПустойИД, (Фирма,Товар,ПоСчету,Договор), (РезервТовара) ) as регSQL

но, имхо, не повлияет ни на что
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #15 - 24. Июля 2009 :: 11:48
Печать  
Ура!
Уже легче стало:
Код
Выбрать все
Слишком долго идет проведение! = 6 сек. сообщите администратору!
Регистр: ОстаткиТоваров Документ: Счет на оплату  Р-00000024 (10.01.09)
 


раньше на первый запрос из (0) уходило 87 сек, на второй 17 секунд.
фух.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #16 - 24. Июля 2009 :: 11:53
Печать  
у вас есть план, мистер фикс?
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #17 - 24. Июля 2009 :: 12:03
Печать  
trad писал(а) 24. Июля 2009 :: 11:53:
у вас есть план, мистер фикс?

не, пока план думаю отложу. (тот который выполнения).
Просто запустил перепроведение, жду когда мне обработка опять выдаст список долгопроводящихся документов.
И вот так уже 3 дня Печаль
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #18 - 24. Июля 2009 :: 12:07
Печать  
berezdetsky писал(а) 24. Июля 2009 :: 09:51:
ВТ в 1С++ так устроены, что 1CQA план запроса с ВТ не построит. Можно его построить по результату отладки.

Вот это влиять не может?

ОбратныйРасчетОтТА? Никогда не пользовался, просто слегка не въезжаю в механизм работы.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #19 - 24. Июля 2009 :: 12:35
Печать  
trdm писал(а) 24. Июля 2009 :: 12:07:
berezdetsky писал(а) 24. Июля 2009 :: 09:51:
ВТ в 1С++ так устроены, что 1CQA план запроса с ВТ не построит. Можно его построить по результату отладки.

Вот это влиять не может?

ОбратныйРасчетОтТА? Никогда не пользовался, просто слегка не въезжаю в механизм работы.

ВТ РегистрОстатки считает остаток на нужный момент времени путем взятия остатков из ближайшей по времени границы плюс/минус обороты от этой границы до нужного момента.
Одно исключение: Если ОбратныйРасчетОтТА(0) то в текущем (актуальном) периоде всегда будет расчет от ранней границы вперед.
Т.е. если периодичность регистра - Месяц, сегодня 24 число (и ТА там же). Хотим получить остаток на 22 число. Будет взят остаток на 1 число и прибавлены обороты за 1-21. Хотя выгоднее взять ТА и вычесть обороты 22-24.
Поэтому при проведении, т.е. в рамках транзакции, можно разрешить ОбратныйРасчетОтТА(1).
Не в транзакции (например в отчетах) это не рекомендуется.
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #20 - 28. Июля 2009 :: 08:44
Печать  
Пиииииисец О_о....
Оптимизировали, оптимизировали, а потом выяснили, что на серваке со скулем всего 2 Гига оперативки ))
Это при базе в 8 Гб. и 60 конкурентных пользователей....
Ахренеть Улыбка))
И еще работала весьма сносно, только в последний месяц тормоза пошли Улыбка)))
Семерка - вещь Улыбка))
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выполнение запросов в обработке проведения и в общем режиме.
Ответ #21 - 28. Июля 2009 :: 09:37
Печать  
trdm писал(а) 28. Июля 2009 :: 08:44:
Пиииииисец О_о....
Оптимизировали, оптимизировали, а потом выяснили, что на серваке со скулем всего 2 Гига оперативки ))
Это при базе в 8 Гб. и 60 конкурентных пользователей....
Ахренеть Улыбка))
И еще работала весьма сносно, только в последний месяц тормоза пошли Улыбка)))
Семерка - вещь Улыбка))

А если еще кроме памяти дисковую систему
сервера оптимизируешь то выигрыш  получишь еще больше.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать