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

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

Как выполнить много асинхронных запросов к БД (ADO)? [D6, XP]


Страницы:   1 2 3

Сергей Ю ©   (2007-08-24 10:02:00) 

Есть БД к которой нужно довольно часто обращаться, при этом программа должна работать дальше не дожидаясь когда придет результат. Хочу сделать асинхронные запросы (вроде именно это и должно мне помочь). Но вот как сделать чтоб создавался следущий запрос если еще и первый то не успел выполниться? И как узнать потом в обработчике onfetch какой именно из запросов выполнился?


sniknik   (2007-08-27 15:34:00) [1]

а кто работает с mySQL я или ты? по идее тебе лучше знать. я если и вспомню, что так только по аналогии/если мне "что то" "что нибудь" напомнит.


Сергей Ю   (2007-08-27 15:31:00) [2]

:) Отлично
Тогда какие "фенечки" нужно учесть при обращении к mySQL посредством ADO+ODBC?


sniknik   (2007-08-27 15:26:00) [3]

> Т.е. теперь вопрос сформулируем так:
а как не формулируй, абстрактные понятия не оптимизируются в принципе.

> Как повысить быстродействие выполнения запроса к базе на mySQL?
правильно поставить индексы, оптимально составить запрос, исправить структуру под задачу. в зависимости от логики/используемых компонент отключить неиспользуемое но времяемкое (перерисовку по каждой записи например). и т.д.

> Какими компонентами пользоваться.
любыми. это практически непринципиально. но у каждых свои "фенечки", и действовать надо так чтобы их учитывать (а это уже принципиально).


Сергей Ю   (2007-08-27 15:15:00) [4]


> А если твой комп пеерзагрузится (или как то по другому сбросятся
> старые данные), заново считать будешь?

Собственно мне главное именно за эту минуту посчитать и эту цифирку положить в другое место :) Так что история тут не нужна.

> "узкое место" обычно сидит перед компьютером, и думает что
> пишет программу

Ну дак это понятно. Посему и испрашиваю у гуру помощи :)
Т.е. теперь вопрос сформулируем так:
Как повысить быстродействие выполнения запроса к базе на mySQL? Какими компонентами пользоваться.


sniknik   (2007-08-27 15:07:00) [5]

> можно ли создать рядом еще одну БД с одной таблицей и селектить из 2 баз.
вряд ли, mysql гетерогенных запросов не поддерживает. (имхо конечно. может уже что нибудь изменилось)

> Может тут "узкое место"?
"узкое место" обычно сидит перед компьютером, и думает что пишет программу.


Сергей Ю   (2007-08-27 14:55:00) [6]

Да вот я тоже думаю что договато идет. Это вобщемто обычный лог проксисервера. На серваке mySQL. Я к нему хожу по ADO+ODBC. Может тут "узкое место"? Кстати а обновление драйверов ODBC может помочь увеличить быстродействие?


Sergey13   (2007-08-27 14:55:00) [7]

> [36] Сергей Ю   (27.08.07 14:38)

А если твой комп пеерзагрузится (или как то по другому сбросятся старые данные), заново считать будешь?
Можно ли в мускуле обработать запрос к нескольким базам сразу? Это типа (возвращаясь к [30]) если к твоей боевой БД есть только право на селект, можно ли создать рядом еще одну БД с одной таблицей и селектить из 2 баз.


sniknik   (2007-08-27 14:46:00) [8]

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


Сергей Ю   (2007-08-27 14:38:00) [9]

За счет запроса :) Запрос теперь не за весь период работы компа а только за последнюю минуту. А скадываю уже с ранее имеющимися данными я сам.
Вобщем тупил я долго. Видать пятница была :)
Тут ведь и 100 запросов не нужны, т.к. минута то у всех компов "общая" т.е. реально мне и надо один запрос по всем компам за прошедшую минуту.
Блин аж самому студно стало :) Но место этой ветке не в "новичках" а в "идиотах" :) :(
Хотя плюсы тоже есть, почитал про асинхронные запросы и про потоки :)


Sergey13   (2007-08-27 13:13:00) [10]

> [34] Сергей Ю   (27.08.07 13:06)
> Время получения данных с БД сократилось с 3 минут до 30-40 секунд

За счет чего?


Сергей Ю   (2007-08-27 13:06:00) [11]

Время получения данных с БД сократилось с 3 минут до 30-40 секунд. Уже прогресс, щас еще асинхронный запрос прикручу и наверно вобще можно будет жить с этим :)


Sergey13   (2007-08-24 14:23:00) [12]

> [31] Сергей Ю   (24.08.07 14:15)
> С правами на селект

Попроси того, кто тебе дал это право самому сделать ее.


sniknik   (2007-08-24 14:18:00) [13]

> Поэтому 100 запросов придется делать все равно.
UNION ALL не поддерживается mysql-ем?


Сергей Ю   (2007-08-24 14:15:00) [14]


> ну так добавь табличку в БД - это не страшное вмешательство
> в структуру

С правами на селект ;)?


Sergey13   (2007-08-24 13:58:00) [15]

> [29] Сергей Ю   (24.08.07 13:52)
> А есть только у меня.

ну так добавь табличку в БД - это не страшное вмешательство в структуру.


Сергей Ю   (2007-08-24 13:52:00) [16]

В том то и дело что в базе этой информации нет. А есть только у меня.
Траффик мне и нужен за период времени. От начала работы компа до текущего момента. А это самое начало у всех компов разное и в БД его нет. Поэтому 100 запросов придется делать все равно.


Sergey13   (2007-08-24 13:42:00) [17]

> [24] Сергей Ю   (24.08.07 13:28)
> Не пойдет. Т.к. time_on у всех машин разный.

Он где то лежит в базе? Если да, то привяжи к этому запросу типа

select ip,sum(bytes)
from table,table_time_on tto
where tto.ip=table.ip and port=3128 and time>tto.time_on
group by ip


Anatoly Podgoretsky   (2007-08-24 13:36:00) [18]

> Ega23  (24.08.2007 13:33:25)  [25]

Вообще то трафик считают за период, а не от time_on
Автор почему то другого мнения.


Anatoly Podgoretsky   (2007-08-24 13:34:00) [19]

> Ega23  (24.08.2007 13:08:20)  [20]

Это очень простая и жирная лицензия, особенно для Веб сервисов.
Каждому пользователю по лицензии.


Ega23   (2007-08-24 13:33:00) [20]


> Не пойдет. Т.к. time_on у всех машин разный.


и чё?


Страницы:   1 2 3

Наверх

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