Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Зависание при запросе остатков (число прочтений - 2753 )
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Зависание при запросе остатков
03. Июля 2012 :: 12:42
Печать  
Есть запрос:

Код
Выбрать все
    итзОстаткиНоменклатуры = СоздатьОбъект("ИндексированнаяТаблица");
	итзПараметр = СоздатьОбъект("ИндексированнаяТаблица");
	НаборЗаписей = СоздатьОбъект("ODBCRecordset");
	НаборЗаписей.РежимRPC(1);
	текстЗапроса = "
	|WITH Номенклатура_Иерархия(ID,Code,Descr,ParentID,IsFolder,SP85,SP94,SP42815,Level) as (
	|SELECT
	|	СпрНоменкл.ID,
	|	СпрНоменкл.Code,
	|	СпрНоменкл.Descr,
	|	СпрНоменкл.ParentID,
	|	СпрНоменкл.IsFolder,
	|	СпрНоменкл.SP85,
	|	СпрНоменкл.SP94,
	|	СпрНоменкл.SP42815,
	|	1
	|FROM
	|	$Справочник.Номенклатура СпрНоменкл
	|WHERE
	|	СпрНоменкл.ParentID = $ПустойИД
	|UNION ALL
	|SELECT
	|	СпрН.ID,
	|	СпрН.Code,
	|	СпрН.Descr,
	|	СпрН.ParentID,
	|	СпрН.IsFolder,
	|	СпрН.SP85,
	|	СпрН.SP94,
	|	СпрН.SP42815,
	|	Level + 1
	|FROM
	|	$Справочник.Номенклатура СпрН
	|INNER JOIN
	|	Номенклатура_Иерархия СпрНИ ON СпрН.ParentID = СпрНИ.ID
	|)
	|
	|SELECT
	|	СпрНом.ID [Номенклатура $Справочник.Номенклатура],
	|	RTRIM(CAST(CAST(СпрНом.Code as INT) as CHAR)) Код,
	|	RTRIM(СпрНом.Descr) Наименование,
	|	СпрНом.ParentID ИдГруппы,
	|	RTRIM(CAST(CAST(СпрНомГр.Code as INT) as CHAR)) КодРодителя,
	|	СпрНом.IsFolder Группа,
	|	RTRIM(СпрНом.SP85) Артикул,
	|	RTRIM(СпрЕд.SP80) Штрихкод,
	|	RTRIM(CAST(СпрЦенник.CODE as CHAR)) КодЦенника,
	|	Level Уровень,
	|	РегОстатки.КоличествоОстаток Остаток
	|FROM
	|	$РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки
	|LEFT JOIN
	|	Номенклатура_Иерархия СпрНом ON СпрНом.ID = РегОстатки.Номенклатура
	|LEFT JOIN
	|	$Справочник.Единицы СпрЕд ON СпрЕд.ID = СпрНом.SP94
	|LEFT JOIN
	|	$Справочник.Номенклатура СпрНомГр ON СпрНомГр.ID = СпрНом.ParentID
	|LEFT JOIN
	|	$Справочник.сфЦенники СпрЦенник ON СпрЦенник.ID = СпрНом.SP42815
	|
	|";
 



В середине месяца все работает, но в начале месяца при открытии периода он просто виснет и не работает.
Кто нибудь объясните причину.
Как только делаю обновление статистики и реиндексацию, все снова работает.
Может как то оптимизировать запрос??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Зависание при запросе остатков
Ответ #1 - 03. Июля 2012 :: 12:50
Печать  
Дык, а что мешает делать реиндексацию и обновление статистики регламентным заданием на скуль сервере ?

Настроил джоб один раз и забыл.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #2 - 03. Июля 2012 :: 14:10
Печать  
Eprst писал(а) 03. Июля 2012 :: 12:50:
Дык, а что мешает делать реиндексацию и обновление статистики регламентным заданием на скуль сервере ?

Настроил джоб один раз и забыл.


Так и есть, но если допустим пользователь пришел и открыл период запрос не работает.
Приходится тратить целый час на это.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Зависание при запросе остатков
Ответ #3 - 03. Июля 2012 :: 14:31
Печать  
Периодичность хранения останков какая хоть ?
ТА где стоит ?
И.. хотя бы хинты (nolock) для начала, в текст запроса воткнуть не мешало бы
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #4 - 03. Июля 2012 :: 16:17
Печать  
Eprst писал(а) 03. Июля 2012 :: 14:31:
Периодичность хранения останков какая хоть ?
ТА где стоит ?
И.. хотя бы хинты (nolock) для начала, в текст запроса воткнуть не мешало бы

Разве в регистре остатков можно периодичность Указывать?
Оперативные итоги открываются каждый месяц 1 числа
ТА где бы не была поведение одинаковое

хинты (nolock) на что повлияют, не будут блокировать таблицы?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Зависание при запросе остатков
Ответ #5 - 03. Июля 2012 :: 16:44
Печать  
mozer писал(а) 03. Июля 2012 :: 16:17:
Eprst писал(а) 03. Июля 2012 :: 14:31:
Периодичность хранения останков какая хоть ?
ТА где стоит ?
И.. хотя бы хинты (nolock) для начала, в текст запроса воткнуть не мешало бы

Разве в регистре остатков можно периодичность Указывать?
Оперативные итоги открываются каждый месяц 1 числа
ТА где бы не была поведение одинаковое

хинты (nolock) на что повлияют, не будут блокировать таблицы?


Нужно указывать, если хочешь максимальной производительности
при работе.
Улыбка)

нолок да - запросы будут выполнятся "грязным" чтением

  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #6 - 03. Июля 2012 :: 21:59
Печать  
Eprst писал(а) 03. Июля 2012 :: 16:44:
Нужно указывать, если хочешь максимальной производительности
при работе.
Улыбка)



И как это интересно сделать? Для регистра остатки, периодичность недоступна.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Зависание при запросе остатков
Ответ #7 - 04. Июля 2012 :: 09:16
Печать  
mozer писал(а) 03. Июля 2012 :: 21:59:
Eprst писал(а) 03. Июля 2012 :: 16:44:
Нужно указывать, если хочешь максимальной производительности
при работе.
Улыбка)



И как это интересно сделать? Для регистра остатки, периодичность недоступна.


Улыбка
Предприятие-Меню-Операции-Управление оперативными итогами- периодичность хранения останков
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #8 - 18. Июля 2012 :: 10:10
Печать  
Eprst писал(а) 04. Июля 2012 :: 09:16:
mozer писал(а) 03. Июля 2012 :: 21:59:
Eprst писал(а) 03. Июля 2012 :: 16:44:
Нужно указывать, если хочешь максимальной производительности
при работе.
Улыбка)



И как это интересно сделать? Для регистра остатки, периодичность недоступна.


Улыбка
Предприятие-Меню-Операции-Управление оперативными итогами- периодичность хранения останков

Периодичность хранения остатков МЕСЯЦ
  
Наверх
 
IP записан
 
val
Full Member
***
Отсутствует


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

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Зависание при запросе остатков
Ответ #9 - 18. Июля 2012 :: 11:33
Печать  
(2) "если допустим пользователь пришел и открыл период запрос не работает".
Кто мешает тебе в шедулере самому открывать период? Например, за 3 дня до окончания месяца. А потом сразу сделать реиндексацию. Всей базы или хотя бы таблиц остатков RG...
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #10 - 20. Июля 2012 :: 14:33
Печать  
а запрос оптимизировать все таки никак?
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #11 - 20. Июля 2012 :: 14:36
Печать  
это как притча: работает - не трожь. не работает - сделай так чтобы работало, но не трожь запрос
  
Наверх
ICQ  
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #12 - 21. Июля 2012 :: 21:20
Печать  
val писал(а) 18. Июля 2012 :: 11:33:
(2) "если допустим пользователь пришел и открыл период запрос не работает".
Кто мешает тебе в шедулере самому открывать период? Например, за 3 дня до окончания месяца. А потом сразу сделать реиндексацию. Всей базы или хотя бы таблиц остатков RG...

ммм... естественно ты предлагаешь переписать ГМ и открывать все программно
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Зависание при запросе остатков
Ответ #13 - 23. Июля 2012 :: 06:24
Печать  
Для программного открытия периода в разделенном режиме существует обработка УстановкаТА, брать тут: http://www.dev.citykirov.ru/
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать