Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

DBExpress async call   Найти похожие ветки 

 
_vvv_   (2005-09-26 12:02) [0]

Привет народ!

Кто-нибудь пробовал работать с Oracle через DBExpress используя асинхронный вызов запросов. В драйвере есть соответствующая опция.
В общем случае задача стоит такая:
Организовать параллельный вызов нескольких запросов через одно соединение.
У кого есть опыт, плиз, поделитесь.

Спасибо


 
Desdechado ©   (2005-09-26 13:04) [1]

разве "асихронный"=="параллельный"?


 
evvcom ©   (2005-09-26 13:42) [2]

Все равно, пока не отработает один запрос, Оракл в той же сессии не возьмется за второй, имхо. Так есть ли смысл? А в чем нужда сего? Долго запрос отрабатывает?


 
_vvv_   (2005-09-26 13:51) [3]


> разве "асихронный"=="параллельный"?

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


 
_vvv_   (2005-09-26 13:53) [4]


> Все равно, пока не отработает один запрос, Оракл в той же
> сессии не возьмется за второй, имхо. Так есть ли смысл?
> А в чем нужда сего? Долго запрос отрабатывает?

Имеется запрос с фильтрацией на большую таблицу.
Первые записи фетчатся  быстро, но надо еще и посчитать Count.
Много индексов тоже не могу положить.


 
Sergey13 ©   (2005-09-26 14:15) [5]

2[4] _vvv_   (26.09.05 13:53)
> Первые записи фетчатся  быстро, но надо еще и посчитать Count.
Посчитай отдельным запросом (или приделай к основноve через union). Фетч от ассинхронности по любому не ускорится. Может вообще ну его на фиг запрос возвращающий на клиента столько записей.


 
evvcom ©   (2005-09-26 14:18) [6]


> Первые записи фетчатся  быстро

А при чем здесь fetch? Запрос открывается, делается fetch 25 записей (в ОДАКе это так), тут же можешь открывать второй запрос и фетчить его 25 записей. Потом вернуться опять к первому и фетчить его дальше. В чем проблема-то?


 
_vvv_   (2005-09-26 14:38) [7]


> А при чем здесь fetch? Запрос открывается, делается fetch
> 25 записей (в ОДАКе это так), тут же можешь открывать второй
> запрос и фетчить его 25 записей. Потом вернуться опять к
> первому и фетчить его дальше. В чем проблема-то?

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


 
_vvv_   (2005-09-26 14:42) [8]


> > Первые записи фетчатся  быстро, но надо еще и посчитать
> Count.
> Посчитай отдельным запросом (или приделай к основноve через
> union). Фетч от ассинхронности по любому не ускорится. Может
> вообще ну его на фиг запрос возвращающий на клиента столько
> записей.

Я согласен, но не заказчик.


 
Sergey13 ©   (2005-09-26 14:47) [9]

2[8] _vvv_   (26.09.05 14:42)
А что заказчик? Заказал конкретно не менее 100000 записей читать? И всю инфу за 5 лет в гриде смотреть? 8-)


 
_vvv_   (2005-09-26 15:10) [10]


> А что заказчик? Заказал конкретно не менее 100000 записей
> читать? И всю инфу за 5 лет в гриде смотреть? 8-)

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


 
Sergey13 ©   (2005-09-26 15:46) [11]

2[10] _vvv_   (26.09.05 15:10)
Не делай ничего. Если будет ругаться на "медленно" скажи ему, что он сам так хотел.
"Больших семь шапок из овцы не выкроишь никак."
(С) Классик детской литературы.


 
_vvv_   (2005-09-26 16:11) [12]

Мы отвлеклись от основной темы.
Неужели никто не пробовал асинхронно работать с DBExpress?


 
Dexter ©   (2005-09-26 18:01) [13]

Работал, но асинхронный метод не использовал ..... ИИИ


> В общем случае задача стоит такая:
> Организовать параллельный вызов нескольких запросов через
> одно соединение.


Насколько Я понял Вам Дали Ясно понять что подобное невозможно :-\


 
ANB ©   (2005-09-26 18:05) [14]

1. Перейти на прямой доступ (ODAC, DOA)
2. Завести пулл сессий.


 
evvcom ©   (2005-09-26 20:40) [15]


> Count отрабатывает долго

А может ты просто запрос неоптимально написал? Я на днях первое, что написал был обычный select с join-ами нескольких таблиц (на выходе тыс.50-70 записей), потом join с таблицей через dblink (около 200 тыс.записей) и еще один локальный join. Запрос отрабатывал 1,5 минуты в задаче, где пользователь должен был вводить данные. Он бы повесился, тратив по 1,5 минуты на ожидание при вводе каждого документа. Целый день я потратил на оптимизацию сего запроса. В результате вышел на результат менее 1 секунды.
А у тебя, если все данные на одном сервере, так это вообще просто.



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

Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
2-1129281477
Ardeh
2005-10-14 13:17
2005.11.06
MS WORD


9-1112703539
qwe
2005-04-05 16:18
2005.11.06
Glscene скорость работы приложения


1-1129098274
Антоныч
2005-10-12 10:24
2005.11.06
Перестала работать функция дополнения класса


2-1129308522
d_savrasov
2005-10-14 20:48
2005.11.06
QucikReport


3-1127550029
menart
2005-09-24 12:20
2005.11.06
ADO API





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский