Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Длительные процедуры на сервере [D7, FIB 1.5]


yaric ©   (2004-12-14 14:10:00) 

Подскажите как лучше всего реализовать процедуру, которая будет
работать длительное время(например расчет заработной платы).
Делать с помощью ХП - возникнут проблемы с отладкой, да и это все остальные будут ждать пока процедура отработает что нехорошо.
Да и серваки у клиентов могут быть как под виндой так под Х-сами.
Делать с помощью трехзвенки и выносить это все на сервер приложений, но проблемы с разными платформами остаются.
Посоветуйте как лучше. Может кто-то уже такое делал.


yaric   (2004-12-15 10:06:00) [1]

Спасибо всем за советы.Д
умаю идея с дроблением процедуры на более мелкие,
которые будут вызываться поочередно имеет свои преимущества.
Попробую сделать так


Sergey13   (2004-12-15 09:23:00) [2]

2[13] yaric   (14.12.04 17:56)
>как мне ЛУЧШЕ реализовать с помощью ХП или СЕРВЕРА ПРИЛОЖЕНИЙ вот такую штуку
А какая разница? Что больше ндравится - тем и делай.


AndriyKo   (2004-12-14 21:10:00) [3]

В таком случае можно действовать по принципу "Много коротких запросов вместо одного длинного". Например, процедура просчитывает ЗП только по одному сотруднику (ну или по немногочисленной группе). В таком случае работа остальных клиентов не будет намертво заблокирована. То есть бухгалтер запускает формирование отчета, внутри которого в цикле вызывается ХП, и идёт спокойно обедать. Другие смогут работать, в общем, даже не испытывая особых проблем. Немного подтормаживать будет, конечно, но всёж лучше, чем отправить спать весь отдел.


Johnmen   (2004-12-14 18:17:00) [4]

>yaric   (14.12.04 17:58) [14]

Если миллионы, то это не означает долгой работы.
Как правило, неоптимально сконструированные запросы, необоснованно утяжеленный алгоритм и т.п., приводят к долгой работе.
(вытаскивание на клиента лимонов не рассматриваем...:))


yaric   (2004-12-14 17:58:00) [5]

Допустим все это выполняется и структура оптимальная и индексы работают но данных ну очень много милионы записей. А это значит что процедура будет работать долго.


yaric   (2004-12-14 17:56:00) [6]

Народ мы отвлеклись от темы
я же спрашивал посмотрите на вопрос
как мне ЛУЧШЕ реализовать с помощью ХП или СЕРВЕРА ПРИЛОЖЕНИЙ вот такую штуку. То что мне РЕАКТОР написал я так знаю.


PEAKTOP   (2004-12-14 17:49:00) [7]

Если у тебя база "тормозит" на запросах, это означает одно из следующих:
1)полетели индексы в сторону заходящего солца. Периодически надо их пербивать.
2)дофига мусора в базе. Надо делать sweep.
3)давно не делалась "дефрагментация".
Все три пункта лечаться путем выгнать всех из базы(или придти к клиенту в 3 часа ночи)->backup->restore.

Если тебе надо отладить процедуру, а на реальных данных не хочеться эксперементировать, делаешь backup->restore в другую базу. И вот над ней изголяешься, как твоей душе угодно. А когда отладишь ХП, подгружаешь в основную базу.

Если сервак тормозит, то может ему не хватает пямяти. Лечиться увеличением в конфиге объем кэша.


yaric   (2004-12-14 17:36:00) [8]

Ну тяжелая ХП это значит
поднимающая много данных из таблиц,
пишущая много промежуточных данных и т.д
Соответственно тяжелый запрос
Select * from ХП_имя


Digitman   (2004-12-14 14:52:00) [9]


> Делать с помощью ХП - возникнут проблемы с отладкой,


нет никаких проблем с отладкой.
ДАЖЕ если какой-то там IBExpert c эти не справляется.
ищи на ibase.ru отлад.софт . базирующийся на внешнем сом-сервере IBDebugWnd.exe


> если у меня множество вложенных в друг друга ХП


да хоть сотня таких множеств.


> ограничитель в 64К никто не отменял


и что ?


> Насколько я помню у Ковязина было так:
> " SuperServer... при выполнении "тяжелого запроса"


на основании чего ты приписал свой запрос именно  к "тяжелым" ?
время его исполнения не может служить основанием для занесения его в разряд "тяжелых"


Zacho   (2004-12-14 14:48:00) [10]

yaric   (14.12.04 14:34) [7]
Ну а если у меня множество вложенных в друг друга ХП(ограничитель в 64К никто не отменял)


А зачем такие гигантские ХП ? Подозреваю, что у тебя всё-таки что-то не так со структурой БД. Или с логикой работы ХП.

>как мне при отладке
> во вложенные ХП заходить даже с помощью IBExpert.

Естественно, отлаживать их отдельно :) Сначало - вложенные, как отладищь - переходишь к ХП "верхнего уровня".


yaric   (2004-12-14 14:39:00) [11]

>>Zacho
Что-то я не понял, что ты под этим имеешь в виду

Насколько я помню у Ковязина было так:
" SuperServer... при выполнении "тяжелого запроса" пытается обращаться с ним как с небольшим,т.е. отдает ему всю доступную кеш память и ресурсы, вытесняя при этом все остальные запросы. Результат печален - пока выполняется запрос-тяжеловес, остальные запросы "топчутся в очереди"".


yaric   (2004-12-14 14:34:00) [12]

Ну а если у меня множество вложенных в друг друга ХП(ограничитель в 64К никто не отменял) как мне при отладке
во вложенные ХП заходить даже с помощью IBExpert.


Zacho   (2004-12-14 14:29:00) [13]

yaric   (14.12.04 14:18) [2]
Ну до получаса


Нифига себе ! Может у тебя со структурой БД или с железом проблемы ?


Zacho   (2004-12-14 14:27:00) [14]

yaric   (14.12.04 14:10)
Делать с помощью ХП - возникнут проблемы с отладкой


Берёшь IBExpert - и никаких проблем.

> да и это все остальные будут ждать пока процедура
> отработает что нехорошо.

Что-то я не понял, что ты под этим имеешь в виду.

> Да и серваки у клиентов могут быть как под виндой так
> под Х-сами

Язык триггеров и хранимых процедур никак не зависит от ОС.

Подозреваю, что ты просто путаещь ХП и UDF


yaric   (2004-12-14 14:27:00) [15]

Не понял как эта ссылка должна была меня натолкнуть на решение проблемы


HSolo   (2004-12-14 14:20:00) [16]

http://ibase.ru/devinfo/generator.htm#extra


yaric   (2004-12-14 14:18:00) [17]

Ну до получаса


Sergey13   (2004-12-14 14:14:00) [18]

А сколько ты планирушь времени будет работать ХП? Недели две с 8 до 17?
8-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо