![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Длительные процедуры на сервере [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-)