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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Замедление работы прямого запроса
14. Сентября 2009 :: 04:22
Печать  
Переставили терминал-сервер 1С.
Прямой запрос типа:
Код
Выбрать все
Текст="
|SELECT
|	SUM(ЖР.RESULT)
|FROM
|	$ЖурналРасчетов.Зарплата ЖР
|WHERE
|	ЖР.PERIOD IN ("+Период_+") AND
|	ЖР.IDS = :Сотр AND
|	ЖР.IDALG IN (SELECT VAL FROM "+СокрЛП(ИмяТ)+") AND
|	ЖР.RESULT<>0
|";
 


стал выполняться в разы медленней.
Железо осталось тоже (поменяли только винчестеры на аналогичные).
Куда копать? Что приходит первое на ум - установил новый драйвер VFPOLEDBSetup (9.0 sp2).
Версия 1спп на рабочей базе стоит 2.5.0.0 (ночная сборка от 26.10.2006)
Установил на него драйвер
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Замедление работы прямого запроса
Ответ #1 - 14. Сентября 2009 :: 06:59
Печать  
Скорее всего проблема в каких то системных настройках,
тем не менее если интересует скорость, то можно явно использовать индекс
I=IDS+PERIO|              |0     |IDS,PERIOD,ORDER,DATEB  (указан в 1Cv7.DD)

подключение должно быть
Код
Выбрать все
	Рез=глОлеДБ.Соединение("
	|Provider=VFPOLEDB.1;
//	|Deleted=Yes;
	|Null = Yes;
	|Exclusive = No;
	|SourceType = DBF;
	|Data Source=" + КаталогИБ() + ";
	|Mode=ReadWrite;
	|Extended Properties="""";
	|User ID="""";
	|Password="""";
	|Mask Password=False;
	|Collating Sequence=MACHINE;
	|TABLEVALIDATE =0;
	|DSN="""""); 


запрос переделан на
Код
Выбрать все
Текст="
|SELECT
|	SUM(ЖР.RESULT)
|FROM
|	$ЖурналРасчетов.Зарплата ЖР
|WHERE
| ЖР.ids+ЖР.period+STR(ЖР.order,3)+DTOS(ЖР.dateb) like :Сотр+'____________________'
|	AND ЖР.PERIOD IN ("+Период_+")
|	AND ЖР.IDALG IN (SELECT VAL FROM "+СокрЛП(ИмяТ)+")
|	AND ЖР.RESULT<>0
|";

 


подчеркиваний в нем  20 (9+3+8)
если расшифруешь Период_ можно и его использовать в индексе
  
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Замедление работы прямого запроса
Ответ #2 - 15. Сентября 2009 :: 01:36
Печать  
Спасибо, только с приведённой тобой сторокой подключения новый драйвер при подключении вываливается в ошибку. Убирал все параметры, кроме data sourse и Collating Sequence.
Collating стояла рашен. Убрал этот параметр тоже - получил увеличение производительности в несколько раз.
Сейчас попробую ещё и попадание в индекс.
Объясни, плз, зачем к искомому значению добовление подчеркиваний? Как это работает?  Круглые глаза
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Замедление работы прямого запроса
Ответ #3 - 15. Сентября 2009 :: 01:40
Печать  
Период - несколько возможных периодов через запятую. Вряд ли получиться это использвать в индексе... наверное.
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Замедление работы прямого запроса
Ответ #4 - 15. Сентября 2009 :: 01:52
Печать  
Хм. Использование индекса оч помогло!
Промежуточных замеров не делал, но все принятые меры (намного более новая 1спп, изменение строки подключения, использование индекса) принесли прирост общей производительности (не именно выполнения этого запроса, там ещё есть запросы в обработке, просто подавляющая доля времени приходиласб на этот запрос) в 32 раза.
Производительность именно этого запроса повысилась на много более высокое значение.
Спасибо, кируша!
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Замедление работы прямого запроса
Ответ #5 - 15. Сентября 2009 :: 05:31
Печать  
DionX писал(а) 15. Сентября 2009 :: 01:36:
Collating стояла рашен.

Одно из главных условий попадания в индекс - это "Collating Sequence=MACHINE;"
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать