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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Тупит запрос иногда
22. Ноября 2011 :: 07:00
Печать  
Есть запрос выборки остатков.
Запрос следующий:
Код
Выбрать все
	|WITH Номенклатура_Иерархия(ID,Code,Descr,ParentID,IsFolder,SP85,SP94,Level) as (
	|SELECT
	|	СпрНоменкл.ID,
	|	СпрНоменкл.Code,
	|	СпрНоменкл.Descr,
	|	СпрНоменкл.ParentID,
	|	СпрНоменкл.IsFolder,
	|	СпрНоменкл.SP85,
	|	СпрНоменкл.SP94,
	|	1
	|FROM
	|	$Справочник.Номенклатура СпрНоменкл
	|WHERE
	|	СпрНоменкл.ParentID = $ПустойИД
	|UNION ALL
	|SELECT
	|	СпрН.ID,
	|	СпрН.Code,
	|	СпрН.Descr,
	|	СпрН.ParentID,
	|	СпрН.IsFolder,
	|	СпрН.SP85,
	|	СпрН.SP94,
	|	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) Штрихкод,
	|	Level Уровень,
	|	РегОстатки.КоличествоОстаток Остаток
	|FROM
	|	$РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки
	|LEFT JOIN
	|	Номенклатура_Иерархия СпрНом ON СпрНом.ID = РегОстатки.Номенклатура
	|LEFT JOIN
	|	$Справочник.Единицы СпрЕд ON СпрЕд.ID = СпрНом.SP94
	|LEFT JOIN
	|	$Справочник.Номенклатура СпрНомГр ON СпрНомГр.ID = СпрНом.ParentID
 



Бывают моменты когда данный запрос "Весит" всю обработку.
Может висеть бесконечно долго,  но большую часть времени работает нормально. Подскажите как можно данную проблему обнаружить? И решить по возможности
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тупит запрос иногда
Ответ #1 - 22. Ноября 2011 :: 08:39
Печать  
Попробуйте с подсказками по блокировкам:
Код
Выбрать все
|WITH Номенклатура_Иерархия(ID,Code,Descr,ParentID,IsFolder,SP85,SP94,Level) as (
	|SELECT
	|	СпрНоменкл.ID,
	|	СпрНоменкл.Code,
	|	СпрНоменкл.Descr,
	|	СпрНоменкл.ParentID,
	|	СпрНоменкл.IsFolder,
	|	СпрНоменкл.SP85,
	|	СпрНоменкл.SP94,
	|	1
	|FROM
	|	$Справочник.Номенклатура AS СпрНоменкл WITH (NOLOCK)
	|WHERE
	|	СпрНоменкл.ParentID = $ПустойИД
	|UNION ALL
	|SELECT
	|	СпрН.ID,
	|	СпрН.Code,
	|	СпрН.Descr,
	|	СпрН.ParentID,
	|	СпрН.IsFolder,
	|	СпрН.SP85,
	|	СпрН.SP94,
	|	Level + 1
	|FROM
	|	$Справочник.Номенклатура AS  СпрН WITH (NOLOCK)
	|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) Штрихкод,
	|	Level Уровень,
	|	РегОстатки.КоличествоОстаток Остаток
	|FROM
	|	$РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки
	|LEFT JOIN
	|	Номенклатура_Иерархия СпрНом ON СпрНом.ID = РегОстатки.Номенклатура
	|LEFT JOIN
	|	$Справочник.Единицы AS СпрЕд WITH (NOLOCK) ON СпрЕд.ID = СпрНом.SP94
	|LEFT JOIN
	|	$Справочник.Номенклатура AS СпрНомГр WITH (NOLOCK) ON СпрНомГр.ID = СпрНом.ParentID

 

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #2 - 22. Ноября 2011 :: 08:40
Печать  
попробовал посмотреть в профайлере!
Ни каких действий или я просто их не вижу, но подобного запроса в профайлере я не увидел.
Получается, что запрос даже не начинает выполнятся???
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #3 - 22. Ноября 2011 :: 08:42
Печать  
pvase писал(а) 22. Ноября 2011 :: 08:39:
Попробуйте с подсказками по блокировкам:

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #4 - 22. Ноября 2011 :: 08:58
Печать  
mozer писал(а) 22. Ноября 2011 :: 08:42:
pvase писал(а) 22. Ноября 2011 :: 08:39:
Попробуйте с подсказками по блокировкам:

попробую!

проба не удалась. Запрос не выполняется, Видимо что то на сервере, но что понять не могу  Озадачен
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тупит запрос иногда
Ответ #5 - 22. Ноября 2011 :: 09:08
Печать  
mozer писал(а) 22. Ноября 2011 :: 08:58:
mozer писал(а) 22. Ноября 2011 :: 08:42:
pvase писал(а) 22. Ноября 2011 :: 08:39:
Попробуйте с подсказками по блокировкам:

попробую!

проба не удалась. Запрос не выполняется, Видимо что то на сервере, но что понять не могу  Озадачен

Какую ошибку возвращает сервер?
  
Наверх
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #6 - 22. Ноября 2011 :: 09:12
Печать  
pvase писал(а) 22. Ноября 2011 :: 09:08:
mozer писал(а) 22. Ноября 2011 :: 08:58:
mozer писал(а) 22. Ноября 2011 :: 08:42:
pvase писал(а) 22. Ноября 2011 :: 08:39:
Попробуйте с подсказками по блокировкам:

попробую!

проба не удалась. Запрос не выполняется, Видимо что то на сервере, но что понять не могу  Озадачен

Какую ошибку возвращает сервер?

никакую вообще не возвращает просто при
ВыполнитьИнструкцию(ТекстЗапроса) обработка "уходит" в глубокую "спячку"
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #7 - 22. Ноября 2011 :: 09:33
Печать  
Пробую получить уже сформированный текст запроса через Отладка(1);
ноль реакции сообщение не появляется в табло  Озадачен
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #8 - 22. Ноября 2011 :: 09:57
Печать  
Попробовал следующее. Пробую сформировать только запрос по иерархии все работает. Сдается мне, что что то не так с ВТ РегистрОстатки
Код
Выбрать все
$РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки
 


То есть эта строка, но пока не могу сообразить в чем загвоздка.
При чем смущает некоторая не закономерность таких отказов. Вчера работала сегодня нет. И еще заметил такую вещь Запрос не выполняется НИ НА ОДНОЙ ИЗ БАЗ. То есть проблема наблюдается во всех аналогичных базах (копиях и рабочей базе)
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тупит запрос иногда
Ответ #9 - 22. Ноября 2011 :: 10:47
Печать  
Укажите пожалуйста порядок следования измерений в регистре "ОстаткиТМЦ" и по каким измерениям есть отборы.
  
Наверх
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #10 - 22. Ноября 2011 :: 10:54
Печать  
pvase писал(а) 22. Ноября 2011 :: 10:47:
Укажите пожалуйста порядок следования измерений в регистре "ОстаткиТМЦ" и по каким измерениям есть отборы.

Порядок следования
Фирмы (нет отборов)
Номенклатура (отбор итогов)
Склад (нет отборов)
ЦенаПрод (нет отборов)
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тупит запрос иногда
Ответ #11 - 22. Ноября 2011 :: 11:22
Печать  
Попробуйте так, При этом в ВыбДата передайте ДатаТА:
Код
Выбрать все
	|WITH Номенклатура_Иерархия(ID,Code,Descr,ParentID,IsFolder,SP85,SP94,Level) as (
	|SELECT
	|	СпрНоменкл.ID,
	|	СпрНоменкл.Code,
	|	СпрНоменкл.Descr,
	|	СпрНоменкл.ParentID,
	|	СпрНоменкл.IsFolder,
	|	СпрНоменкл.SP85,
	|	СпрНоменкл.SP94,
	|	1
	|FROM
	|	$Справочник.Номенклатура AS СпрНоменкл WITH (NOLOCK)
	|WHERE
	|	СпрНоменкл.ParentID = $ПустойИД
	|UNION ALL
	|SELECT
	|	СпрН.ID,
	|	СпрН.Code,
	|	СпрН.Descr,
	|	СпрН.ParentID,
	|	СпрН.IsFolder,
	|	СпрН.SP85,
	|	СпрН.SP94,
	|	Level + 1
	|FROM
	|	$Справочник.Номенклатура AS  СпрН WITH (NOLOCK)
	|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) Штрихкод,
	|	Level Уровень,
	|	РегОстатки.КоличествоОстаток Остаток
	|FROM
	|	Номенклатура_Иерархия AS СпрНом
	|LEFT JOIN
	|	$РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВыбФирма AND Номенклатура = СпрНом.ID AND Склад = :ВыбСклад,Номенклатура,Количество) as РегОстатки ON (СпрНом.ID = РегОстатки.Номенклатура)
	|LEFT JOIN
	|	Номенклатура_Иерархия СпрНом ON СпрНом.ID = РегОстатки.Номенклатура
	|LEFT JOIN
	|	$Справочник.Единицы AS СпрЕд WITH (NOLOCK) ON СпрЕд.ID = СпрНом.SP94
	|LEFT JOIN
	|	$Справочник.Номенклатура AS СпрНомГр WITH (NOLOCK) ON СпрНомГр.ID = СпрНом.ParentID 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Тупит запрос иногда
Ответ #12 - 22. Ноября 2011 :: 12:18
Печать  
Номенклатура = СпрНом.ID в параметрах ВТ это сильно..
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Тупит запрос иногда
Ответ #13 - 23. Ноября 2011 :: 02:13
Печать  
pvase писал(а) 22. Ноября 2011 :: 11:22:
Попробуйте так, При этом в ВыбДата передайте ДатаТА:

Это не помогает!
Запрос например сегодня с утра заработал.
Удалось выяснить следующее:
На сервере каждый день выполняется регламентное задание. обновление статистики, реиндексация таблиц.
Так вот при выполнении группового пере проведения документов пересчитываются итоги на конец месяца, а реиндексация таблиц не происходит. Думаю что дело где то здесь.
Возможно ли сделать реиндексацию с помощью запроса прямо из 1С?
Думаю что нужно после пересчета итогов регистров ее (реиндексацию) делать. Если не прав поправьте меня и пните в нужную сторону.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Тупит запрос иногда
Ответ #14 - 23. Ноября 2011 :: 05:28
Печать  
Любые регламентные задания скл-сервера можно запустить из 1с.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать