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
Возникла следующая проблема:
При запуске в нескольких клиентах одновременно довольно длительный запросов эти запросы не выполняются параллельно! Выяснил это запуском одновременно длинного запроса и короткого. По идее если они выполняются параллельно - короткий закончиться быстрее... На самом же деле заканчиваются они в таком же порядке как и запускались...
Получается что каждое подключение не обрабатывается в отдельном витке на сервере приложений. Об этом свидетельствует то, что форма сервера приложений при выполнении запроса повисает и ее нельзя перетащить и т.д.

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


Dimk   (2004-03-11 18:03:00) [81]

Именно.

На какой версии оракла работаете?


Alexander_K   (2004-03-11 18:03:00) [82]

Dimk   (11.03.04 17:59) [66]

Именно это и имеется ввиду! :)


Alexander_K   (2004-03-11 18:01:00) [83]

serge35   (11.03.04 17:55) [65]

Так вот короткий как раз и заканчивается после длинного!!!
Собственно в этом-то и вопрос!


Dimk   (2004-03-11 17:59:00) [84]

2 serge35
Не утрируйте... уж не пиарщик ли вы сударь?
Лично я думаю что речь идет о времени выполнения запроса.
Следовательно:
Длинный запрос - тот что выполняется долго.
Короткий запрос - тот что выполняется быстрее длинного в несколько раз, причем
на том же сервере и примерно в то же время.
Думаю что Автор имел в виду тоже, так как это следует из контекста его вопросов.

Итак:
Есть 2 запроса.
Один короткий :o)
Другой длинный.
Если запустить их из, 2 разных задач, сначала длинный а затем короткий, то короткий закончится раньше.

Если же из программы Автора, которая представляет собой
несколько клиентских программ и одного сервера приложений
в котором создаются несколько RDM, по числу клиентских программ,
запускаются эти запросы в той же последовательности - короткий заканчивается после длинного. Это может, конечно говорить о том что запросы выполняются последовательно (в данном случае).

Мной лично было проверено что дело не в сервере приложений. Сервер приложений прекрасно запускает несколько методов разных COM объектор параллельно.

Вообщето когда я делал подобный проект - я не обратил внимания на то что запросы выполняются последовательно так как мои запросы были КОРОТКИМИ ( :o) )

И тема между прочем серьезная и по ответам видно
что другие тоже не обращали внимания на такое обстоятельство.

Уф вот.


serge35   (2004-03-11 17:55:00) [85]

> Сессия, которую запустил первую, стала активной и стала выполняться, остальные как были inactive так и остались..

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

B Oracle Applications есть форма, в которой выведены все запросы и напротив каждого запроса прописан его статус.
Все прекрасно видно, какой запрос в каком состоянии.

Повторяю еще раз:
Запросы запускаются ПОСЛЕДОВАТЕЛЬНО, а выполняются ПАРАЛЕЛЬНО.

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

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

Представляю, что творилось бы в бухгалтерии, если бы пользовался такими терминами!


Alexander_K   (2004-03-11 17:40:00) [86]

serge35

Хоре флудить да!!! Давай по существу!


Reindeer Moss Eater   (2004-03-11 17:38:00) [87]

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


Alexander_K   (2004-03-11 17:38:00) [88]

Сделал такую вещь:
На форме сервера поставил листбокс и на онкриейт RDM повесил продцедуру добавляющую в листбокс DatabaseName и SessionName из компонента Database
DatabaseName у меня равно sss
При запусках клиентов получилось:
sss  Session1_1
sss  Session1_2
sss  Session1_3

При запуске клиентов (3 шт) на оракле (судя по спотлайту) появилось 3 сессии.
При запуске запросов с каждого клиента получилось:
Сессия, которую запустил первую, стала активной и стала выполняться, остальные как были inactive так и остались..


Vlad   (2004-03-11 17:34:00) [89]


> serge35   (11.03.04 17:25) [60]

Может и в количестве символов, смотря в каком контексте.
Вот только читаю ветку и врубиться не могу к чему этот вопрос ?


serge35   (2004-03-11 17:25:00) [90]

А может в количестве символов в запросе?


Vlad   (2004-03-11 17:19:00) [91]


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

Вырази в чем тебе угодно. Хочешь во времени обработки запроса сервером, хочешь в количестве ресурсов, как тебе угодно.
К чему этот вопрос ?


serge35   (2004-03-11 17:16:00) [92]

С точки зрения клиента нет никакой разницы, как выполняются запросы. Клиент об этом просто ничего не знает. Он отправил
запрос и ждет ответ и все.

У меня есть пара вопросов:
Длина запроса выражается в сантиметрах или в чем-то еще?
и насколько короткий запрос короче длинного?


Reindeer Moss Eater   (2004-03-11 17:09:00) [93]

Тем более, что очереди никакой нет - запросы обрабатываются параллельно.


Reindeer Moss Eater   (2004-03-11 17:06:00) [94]

Ну и смысл тогда глубокомысленных высказываний

"запросы ставятся в очередь"

"И как бы вы ни пытались их запустить в паралель, все равно
запросы будут запускаться поочередно."

с точки зрения клиента Оракла и в контексте ветки????


serge35   (2004-03-11 17:04:00) [95]

Dimk  - читать надо внимательнее.  
> запросы будут запускаться поочередно.
а выполняться они будут паралельно.

как их будет выполнять Оракл - это только одному известно.


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

2 Alexander_K
А не хило бы проверить всеже действительно...
кто может поручиться что делает Borland там у нас за спиной :o)


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

Короче говоря выясняй сколько открывается сессий на оракле при работе твоих клиентов. Гадать на кофейной гуще больше не хочется


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

2 serge35
Я уже запутался с чем с Тобой согласен а с чем нет :o)
> И как бы вы ни пытались их запустить в паралель, все равно
> запросы будут запускаться поочередно.
Ну а Ты веришь что на виндах на 1 процессоре могут ПАРАЛЛЕЛЬНО
выполняться 2 задачи? :o)

В dedicated режимя для каждой сессии запускается dedicated процесс который и выполняет юзерские запросы.
В MTS есть целая куча shared servers которые берут запросы из очереди и выполняют их. И если их (shared servers) не хватает
они запускаются дополнительно.

И в самом деле если сейчас выполняется запрос который идет несколько часов и еще пройдет несколько часов - то если набрать select sysdate from dual - можно идти курить все это время?


Alexander_K   (2004-03-11 16:41:00) [99]

sniknik ©   (11.03.04 16:30) [48]

Как оно может быть дефаулт? Если свойство AutoSessionName стоит true


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

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

Собственно я был против термина "очередь".
То что ты тут описал никак очередью называться не может. Это пул запросов.


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

Наверх

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