Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Длительные процедуры на сервере   Найти похожие ветки 

 
yaric   (2004-12-14 14:10) [0]

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


 
Sergey13 ©   (2004-12-14 14:14) [1]

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


 
yaric   (2004-12-14 14:18) [2]

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


 
HSolo ©   (2004-12-14 14:20) [3]

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


 
yaric   (2004-12-14 14:27) [4]

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


 
Zacho ©   (2004-12-14 14:27) [5]

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


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

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

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

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

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

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


 
Zacho ©   (2004-12-14 14:29) [6]

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


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


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

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


 
yaric   (2004-12-14 14:39) [8]

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

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


 
Zacho ©   (2004-12-14 14:48) [9]

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


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

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

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


 
Digitman ©   (2004-12-14 14:52) [10]


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


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


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


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


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


и что ?


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


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


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

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


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

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

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

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


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

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


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

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


 
Johnmen ©   (2004-12-14 18:17) [15]

>yaric   (14.12.04 17:58) [14]

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


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

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


 
Sergey13 ©   (2004-12-15 09:23) [17]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
1-1104237171
BFG9k
2004-12-28 15:32
2005.01.16
Распаковка rar, zip , gz и т.д.


14-1104143086
Lancelot
2004-12-27 13:24
2005.01.16
Вот, оказывется, кто придумал Deathmatch и Capture The Flag :)


1-1103379997
ZenAS
2004-12-18 17:26
2005.01.16
работа с dll


1-1104410844
Fay
2004-12-30 15:47
2005.01.16
CALLBACK - это stdcall или что?


6-1098833714
SkyNet
2004-10-27 03:35
2005.01.16
UDP и множество сетевых интерфейсов