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

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


Alexander_K   (2004-03-15 11:10:00) [61]

Народ! Дайте ссылки на патчи к Borland C++ Builder 6, если они есть... Пожалуйста!


Alexander_K   (2004-03-15 11:10:00) [62]

Народ! Дайте ссылки на патчи к Borland C++ Builder 6, если они есть... Пожалуйста!


Alexander_K   (2004-03-12 19:39:00) [63]

Dimk   (12.03.04 18:36) [86]

У меня Borland C++ Builder 6


Dimk   (2004-03-12 18:36:00) [64]

Не ручаюсь как в других версиях Delphi - но я только что попробовал
на Delphi7 с socket connection и с dcom connection.
Использовал компоненты TDataBase, TSession, TQuery, TProvider
(ну как все и рекомендуется в доке и примерах).
У меня запросы работают параллельно.
Переслал мои тесты (экзешники) Alexander_K. Тоже все пашет.
Разница, правда в том что у Alexander_K Borland C++ Builder v5.
Может там какой глюк? Может патчи какие надо поставить?
Поделитесь ссылочками на последние патчи для C++ Builder пожалуйста :o) С благодарностью приму ссылки на патчи к Delphi 7


Michail Dalakov   (2004-03-11 23:00:00) [65]

1.Ctrl+Shift+Esc
Выбираем счетчик потоков и смотрим создается ли новый поток

2.Запускаем OCI Debugger (что то типа MSSQL Profiler) и смотрим, а действительно ли второй запрос попадает на сервер, сразу    после первого.

Метод Open у всех датасетов во всех RDM вызывается в одной и той же нити.Reindeer Moss Eater ©   (11.03.04 22:08) [84]

Так не бывает, для каждого клиента в отдельном потоке на сервере приложений создается обслуживающий COM-объект, поэтому метод
Open вызывается в разных потоках.

Можно, предположить, что имеет место синхронизация потоков,
как она у автора получается надо больше информации, но очевидно,
что один поток ждет завершения другого.


Reindeer Moss Eater   (2004-03-11 22:08:00) [66]

Не надо упрямо повторять явную фигнюпро последовательное выполнение запросов в РАЗНЫХ СЕССИЯХ.
Нету никакого последовательного выполнения.
Это вам не локальный интербейс.

Если 5 минут назад главбух в своей сессии запустил расчет баланса который продлится всю ночь, а я к серверу подошел только сейчас, то мой select sysdate from dual выполнится сразу.
И не надо упрямо бубнить про последовательную постановку запросов в очередь на выполнение.
У автора вопроса он по твоему ТРИ МИНУТЫ ставится на выполнение?

У меня точно такой же сервер приложений, но без использования RDM, с точно таким же Ораклом обслуживает клиентов в доп.нитках одного процесса ПАРАЛЛЕЛЬНО.
Запросил один клиент услугу требующую 20 сек - получил результат через 20 сек.
Запросил другой клиент в это же время услугу требующую 1 сек - получил результат через 1 сек.

Итак, что мы выяснили:

-RDM'ов у автора несколько.
-Каждый открывает свое подключение к Ораклу.
-Но тем не менее, клиенты сервера приложений обслуживаются последовательно.

У меня лично осталось одно объяснение этому феномену:

Метод Open у всех датасетов во всех RDM вызывается в одной и той же нити.


Asdor   (2004-03-11 19:42:00) [67]

2 Alexander_K ©
Про запросы...
Открой 2 SQLExplorer'a
Запусти в одном длинный, в другом короткий запрос - и все узнают,
параллельно ли BDE c Oracle выполняют запросы...


roottim   (2004-03-11 18:49:00) [68]

то-биш выполнение их из 2-х сессий склплас дает нужный результат ?

ежели так, то возвращаемся к мидас серверу


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

Да и оба запроса читающие!!!


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

roottim   (11.03.04 18:40) [79]

Специально выбрал запросы по разным таблицам, так что тексты здесь не важны


roottim   (2004-03-11 18:40:00) [71]

и что за запросы ???
 дело может быть в блокировке длинным запросом ресурса для короткого...
 хотя если короткий это читающий select такого быть не должно...

но всеже запросы б в студию...


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

2 serge35
А вот скажи Ты ПРОВЕРЯЛ что у Тебя запросы выполняются
параллельно? Я попытаюсь в свободное время
смоделировать ситуацию и чтобы использовалась не DCOM
а сокет сервер.


serge35   (2004-03-11 18:34:00) [73]

Может автор сообщения что-то утаивает?
или может он изобрел что-то свое?


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

2 serge35
У меня тоже было на нем - но я уже писал что не придавал значения проверке параллельности работы.
А теперь сомневаюсь что там все было параллельно.


serge35   (2004-03-11 18:24:00) [75]

У меня был проект на scktsrvr.exe, подобных проблем не возникало.


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

Ну наконец - то :o)


serge35   (2004-03-11 18:15:00) [77]

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


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

Простите :o)
Про версию оракла вопрос был к serge35


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

serge35   (11.03.04 18:04) [70]

длинный запрос выполняется примерно 3 минуты
а короткий практически мгновенно


serge35   (2004-03-11 18:04:00) [80]

Сколько времени выполняется длинный запрос?


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

Наверх

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