![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"подвисание" приложения во время выполнения запроса
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