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

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

Вопрос про мидас [Win2k]


Страницы:   1 2 3 4 5 6 7 8

Alexander_K ©   (2004-03-10 15:11:00) 

Приветствую всех!

Написал программу, с тонким клиентом, которая работает с БД Оракл.
Instancing - Multiple use
Threading model - Apartment
Возникла следующая проблема:
При запуске в нескольких клиентах одновременно довольно длительный запросов эти запросы не выполняются параллельно! Выяснил это запуском одновременно длинного запроса и короткого. По идее если они выполняются параллельно - короткий закончиться быстрее... На самом же деле заканчиваются они в таком же порядке как и запускались...
Получается что каждое подключение не обрабатывается в отдельном витке на сервере приложений. Об этом свидетельствует то, что форма сервера приложений при выполнении запроса повисает и ее нельзя перетащить и т.д.

Народ подскажите как решить данную проблему, хотелось бы чтобы запросы выполнялись параллельно..


serge35   (2004-03-11 16:34:00) [101]

Alexander_K - посмотри мой ответ № 38.
и найди 10 отличий в твоем последнем предложении.


Alexander_K   (2004-03-11 16:30:00) [102]

serge35   (11.03.04 16:25) [46]

И что ты хочешь сказать, что если длинный запрос запустить, то никто больше работать не сможет???


sniknik   (2004-03-11 16:30:00) [103]

> Хоть в хелпе и сказано, что д.б. True, но чувствую, что должно быть False.
взять да проверить
(гдето там сверху было что счетчик RDM-ом был реализован)
это уже к автору вопроса, переделай чтобы строку показывало вместо чисел в нее вставьляй Database1.SessionName и проследи какие имена при подключении клиентов у тебя выдает. (может действительно все дефаулт)


serge35   (2004-03-11 16:25:00) [104]

Оракл ставит запросы в очередь на выполнение.
Сначала запрос обрабатывает оптимизатор, затем только он
начинает выполнятся. После того, как оптимизатор закончил
работу с одним запросом, он берет следующий запрос из очереди.
И как бы вы ни пытались их запустить в паралель, все равно
запросы будут запускаться поочередно.
А то, что более короткий запрос отработал позже более длинного запроса - просто из-за того, что серверу постоянно приходится переключаться от одного запроса к другому, к тому же первый запрос отхватывает для себя больше ресурсов.


Alexander_K   (2004-03-11 16:22:00) [105]

Reindeer Moss Eater ©   (11.03.04 16:15) [43]

Попробовал, тоже самое


Reindeer Moss Eater   (2004-03-11 16:15:00) [106]

Alexander_K ©   (11.03.04 16:08) [37]
Reindeer Moss Eater ©   (11.03.04 16:03) [34]

У меня true


Хоть в хелпе и сказано, что д.б. True, но чувствую, что должно быть False.

Иначе все модули данных используют одно и то же подключение.
Отсюда и последовательная обработка запросов


Alexander_K   (2004-03-11 16:15:00) [107]

serge35   (11.03.04 16:12) [41]

Да я тоже не сразу врубился...


serge35   (2004-03-11 16:12:00) [108]

Я знаю, что Oracle Applications, если сервер не может запустить несколько паралельных запросов, то просто добавляется администратор запросов и он их запускает и разруливает.


Reindeer Moss Eater   (2004-03-11 16:12:00) [109]

serge35
Ты сам-то себе не противоречь, да?

Оракл, насколько я знаю, все запросы ставит в очередь.

Как он выполнит второй запрос, если в очереди есть невыполненный первый


Dimk   (2004-03-11 16:11:00) [110]

2 serge35
Извини не врубился сразу...
Выходит что я по поводу оракла как раз с тобой согласен! :o)


Alexander_K   (2004-03-11 16:10:00) [111]

Nikolay M. ©   (11.03.04 16:05) [35]

Нет еще :(( На работе завал :(


Alexander_K   (2004-03-11 16:08:00) [112]

Reindeer Moss Eater ©   (11.03.04 16:03) [34]

У меня true


serge35   (2004-03-11 16:08:00) [113]

Ты хочешь сказать, что если запустить один запрос, который отрабатывает сутки, то в течении суток Оракл не выполнит ни одного другого запроса?


Dimk   (2004-03-11 16:07:00) [114]

2 serge35
Поверь - это не так! Запросы разных сессий
выполняются параллельно. Даже если предположить
что ты слышал про Oracle MTS - все равно ( если
админ конечно не лох ) существует параметр MTS_MAX_SERVERS
который должен быть достаточно большим чтобы всегда можно было
запустить еще один share server для обработки юзерских запросов если предыдущие уже заняты. Короче маловероятный вариант.


Nikolay M.   (2004-03-11 16:05:00) [115]


> Alexander_K ©

А с дбфками проверил?


Reindeer Moss Eater   (2004-03-11 16:03:00) [116]

Чему равно HandleShared у TDatabase ?


Alexander_K   (2004-03-11 16:01:00) [117]

serge35   (11.03.04 15:54) [31]

Ты не прав


Dimk   (2004-03-11 15:59:00) [118]

Вот видоизменил тест немного...
procedure Tttttt.M;
var
 i: int64;
begin
 MessageBox(0, 'AAAAAAAA', 'AAAAAAAAA', 0);
 i := 0;
 while i <= 999999999 do //high(i) do
 begin
   Inc(i);
 end;
   MessageBox(0, 'BBBBBBB', 'BBBBBBBBBB', 0);
end;

Действительно работает параллельно.

При использовании формы ( см предыдущий тест. Кстати причем тут ShowMessage? Форма не диалог и просто создается с свойством Visible == True. ) все както работало не устойчиво и часто
клиент отваливались от сервера, особенно если я запускал их (клиентов) более 2. Основная форма не умирает. Поставил на нее Timer по нему прибаляю счетчик который выводится на главную форму сервера.
Похоже для нормальной многопотоковой работы в RDM годится далеко не все...

Итак... если RDM позволяет многопотоковую работу - то кто же не дает потокам нормально работать? Как в RDM все правильно организовать? Может все проблемы в VCL? Что конкретно в ее структуре мешает?


serge35   (2004-03-11 15:54:00) [119]

Оракл, насколько я знаю, все запросы ставит в очередь.
Запустив один запрос, он запускает другой.

Попробуй запустить одни запрос, который будет работать сутки, и за ним запусти запрос, который будет работать 10 сек.

Второй запрос выполнится раньше первого.


Alexander_K   (2004-03-11 14:34:00) [120]

Ну что, будут еще какие-нибудь мысли у кого-нибудь?


Страницы:   1 2 3 4 5 6 7 8

Наверх

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