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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Замедление получения остатков в разрезе складов
03. Марта 2010 :: 06:42
Печать  
После восстановления регистров прямой запрос к базе данных, который получал остатки номенклатуры в разрезе складов(
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Загрузка_.2009.10.19.12.47.06
		|SELECT СпрНом.CODE KOD
		|	, ОстаткиТМЦОстатки.Склад [Skl $Справочник.Склады]
		|	, Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Kol
		|FROM $Справочник.Номенклатура AS СпрНом
		|	LEFT OUTER JOIN $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,
		|		RIGHT OUTER JOIN $Справочник.Номенклатура AS СпрНом ON СпрНом.ID = Номенклатура,
		|		($СпрНом.ВидНоменклатуры = :Прочее)
		|	 AND (СпрНом.IsFolder = :Ноль)
		|		AND (Склад IN (SELECT val FROM #СписокСкладов)),
		|		(Склад, Номенклатура),) AS ОстаткиТМЦОстатки  ON СпрНом.ID = ОстаткиТМЦОстатки.Номенклатура
		|WHERE ($СпрНом.ВидНоменклатуры = :Прочее)
		|	AND (СпрНом.IsFolder = :Ноль)
		|GROUP BY СпрНом.CODE
		|	, ОстаткиТМЦОстатки.Склад
		|ORDER BY СпрНом.CODE
		|	, ОстаткиТМЦОстатки.Склад
		|"; 

) и работал меньше минуты, стал выполняться бесконечно. При этом пользователи не могут работать.
Баг?

  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #1 - 03. Марта 2010 :: 08:27
Печать  
Обновление статистики и дефрагментация индексов.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #2 - 03. Марта 2010 :: 08:28
Печать  
А также исправить запрос в части внесения условий на номенклатуру в виртуальную таблицу
  
Наверх
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #3 - 03. Марта 2010 :: 09:37
Печать  
leshik писал(а) 03. Марта 2010 :: 08:27:
Обновление статистики и дефрагментация индексов.

Как это делается? Я плохо в MS SQL server разбираюсь...
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Замедление получения остатков в разрезе складов
Ответ #4 - 03. Марта 2010 :: 09:49
Печать  
может блокировки для начала посмотреть. Упростить запрос и смотреть. Вот тулза хорошая http://sql.ru/forum/actualthread.aspx?bid=1&tid=272902
Дописал: только выполнять запрос из QA, мало ли что там в 1С еще может глючитьУлыбка
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #5 - 03. Марта 2010 :: 10:24
Печать  
al_zzz писал(а) 03. Марта 2010 :: 09:37:
leshik писал(а) 03. Марта 2010 :: 08:27:
Обновление статистики и дефрагментация индексов.

Как это делается? Я плохо в MS SQL server разбираюсь...

Код
Выбрать все
USE base_1c
DECLARE @MyTable varchar(32)
DECLARE @MyIndex varchar(32)
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
ORDER BY o.name, i.indid
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'Дефрагментация индекса '+@MyIndex+' из таблицы '+@MyTable
DBCC INDEXDEFRAG (0,@MyTable,@MyIndex)
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
END
CLOSE MyCursor
DEALLOCATE MyCursor 


Код
Выбрать все
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
DBCC UPDATEUSAGE (dbname) 


Код
Выбрать все
DBCC FREEPROCCACHE 

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #6 - 03. Марта 2010 :: 10:28
Печать  
(leshik) а зачем в конце кеш процедур освобождать ?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #7 - 03. Марта 2010 :: 10:30
Печать  
Z1 писал(а) 03. Марта 2010 :: 10:28:
(leshik) а зачем в конце кеш процедур освобождать ?

Для сброса закешированых планов выполнения запросов исходя из необновленной статистики и фрагментированных индексов.
  
Наверх
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #8 - 03. Марта 2010 :: 14:49
Печать  
Спасибо!
Вроде бы получилось.
Так это было из-за пересчета регистров или какие-нибудь другие причины тут могут быть?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #9 - 03. Марта 2010 :: 14:50
Печать  
Это было с отсутствием знаний о необходимости периодического обслуживания баз данных MS SQL для поддержания их работоспособности.
  
Наверх
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #10 - 03. Марта 2010 :: 14:55
Печать  
leshik писал(а) 03. Марта 2010 :: 14:50:
Это было с отсутствием знаний о необходимости периодического обслуживания баз данных MS SQL для поддержания их работоспособности.

Бэкапы у меня делаются. Необходимость пересчета регистров возникла из-за несоответствия остатков на конец и оборотов за период, до MS SQL Server такое возникало на dbf. Это и послужило причиной перехода.  Какие ещё действия по обслуживанию нужно запускать периодически и как часто?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #11 - 03. Марта 2010 :: 15:02
Печать  
Действия описаны выше. А вот частота запуска зависит
1) от объема вводимых данных;
2) версии SQL. (кстати о версии - не выполните ли в QA
Код
Выбрать все
select @@version 

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #12 - 03. Марта 2010 :: 15:03
Печать  
leshik писал(а) 03. Марта 2010 :: 15:02:
Действия описаны выше. А вот частота запуска зависит
1) от объема вводимых данных;
2) версии SQL. (кстати о версии - не выполните ли в QA
Код
Выбрать все
select @@version 

)

Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.2 (Build 3790: )
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #13 - 03. Марта 2010 :: 15:06
Печать  
Уууу может стоит все таки Service Pack -и все поставить? довести до
2000 - 8.00.2040
  
Наверх
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Замедление получения остатков в разрезе складов
Ответ #14 - 03. Марта 2010 :: 15:10
Печать  
leshik писал(а) 03. Марта 2010 :: 15:06:
Уууу может стоит все таки Service Pack -и все поставить? довести до
2000 - 8.00.2040

Были такие мысли, но побоялись сделать хуже и отложили. Теперь, наверное, займемся.
А, подскажите, есть смысл перейти на MS SQL Server 2005 на 7.7, насколько это сочетание работоспособно и будет ли прирост в производительности?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать