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

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

"подвисание" приложения во время выполнения запроса


irish ©   (2004-06-15 21:08:00) 

Иногда на выполнение запроса к базе требуется много времени (мин. 20 и больше). Как сделать так, чтобы во время выполнения этого запроса приложение не "подвисало", чтобы пользователь имел доступ к элементам управления формы?


irish   (2004-06-16 15:19:00) [1]

>Danilka ©
Информация накапливающегося характера
И что лучше: разместить больше информации или проиндексировать все поля? (а поиск может проводится по всем) :))


irish   (2004-06-16 15:11:00) [2]

Похоже, не все так просто. "Часики" все равно висят. И приоритет роли не играет...


Danilka   (2004-06-16 14:59:00) [3]

[10] irish   (16.06.04 14:55)

> Все поля не проиндексируешь

Почему? :))
По крайней мере те, по которым будет сортировка/фильтрация - запросто.


irish   (2004-06-16 14:55:00) [4]

Ладно, ладно, шутники. Все поля не проиндексируешь, а сканирование одной таблицы по неиндексированному полю - 2,5 мин.
А за идею TThread спасибо!


Danilka   (2004-06-16 14:02:00) [5]

Alexander_K ©
Johnmen ©

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


Johnmen   (2004-06-16 13:38:00) [6]

>Danilka ©   (16.06.04 13:29) [7]

Не соглашусь. Т.к., например, сбор сложной статистики может идти долго. При этом может выполняться более 1 запроса.
И это вовсе не значит, что все будут вешаться...
:)


Danilka   (2004-06-16 13:29:00) [7]

[5] Alexander_K ©   (16.06.04 12:06)
Чего только не бывает. Но 20 минут - это клиника. Если запросы к базе на 20 минут, значит либо база спроектирована неверно, либо запрос корявый, третьего не дано.
Иногда, лучше добавить избыточности в базу, чем так вешать всех.

По мне, так запрос со временем выполнения на 10 секунд это уже что-то не так и надо выправлять ситуацию, а тут - на два порядка...


Alexander_K   (2004-06-16 12:09:00) [8]

А вообще, посмотри еще, может тебе где-нибудь в БД индексы построить надо - заметно убыстряет выполнение запросов


Alexander_K   (2004-06-16 12:06:00) [9]

Danilka ©   (16.06.04 08:07) [3]  bushmen ©   (16.06.04 11:18) [4]

Да ладно, бывают иногда здоровые базы, и запросы мощьные (связано около 10 таблиц и т.д.), так что и с индексами все равно тормозит.
Правда такие запросы обычно выполняются для какой-нибудь статистики, и довольно редко, но в моей практике встречаются.

А по существу: правильно тебе сказали про потоки. Почитай про TThread, посмотри в примерах, там есть проги с их использованием.


bushmen   (2004-06-16 11:18:00) [10]

>какие терпеливые юзеры

Они, наверное, до этого на счетах считали по паре месяцев :)


Danilka   (2004-06-16 08:07:00) [11]


> (мин. 20 и больше)

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

:))


sniknik   (2004-06-16 00:32:00) [12]

> мин. 20 и больше
запрос к ленинской библиотеке на содержание 18-го тома? ;о))

чтобы приложене не "подвисало" универсальное средство делать "тормозящее" действие в отдельном потоке. или воспользоватся готовым из какого нибудь поддерживающего компанента. (но смысл все одно - отдельный поток)


Johnmen   (2004-06-15 21:46:00) [13]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1086877190&n=1


Наверх

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