Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/43: Рейтинг темы: голосов - 43, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 09.08.2010
Сообщений: 10

Прогресс бар + SQL база(Ожидание выполнения))

09.08.2010, 11:39. Показов 9576. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте уважаемые програмеры C#, вошел я в ваши ряды совсем недавно, воэтому вопрос мой может показаться достаточно ламмерским, но все же: есть форма Default.aspx работающая с SQL базой, иногда запрос выполняется более 2-х минут. Вопрос как внедрить туда какой нибудь прогресс бар или заблокировать страницу на время выполнения запроса, с выводом соответстующего сообщения типа: "Пожалуйста подождите". Помогите пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2010, 11:39
Ответы с готовыми решениями:

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

Ожидание выполнения команды в консоли
Создается процесс "cmd.exe" В нем выполняются последовательно команды с помощью перенаправления стандартного потока ввода, например,...

Запуск нескольких Task-ов и ожидание их выполнения
Всем доброго времени суток. Мне необходимо отправлять сразу несколько запросов на линки какого-либо сайта. Решил я для этго использовать...

44
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 13:38
Студворк — интернет-сервис помощи студентам
создате форму, и киньте на нее progressbar
далее

C#
1
2
3
4
5
6
7
        private void Form1_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.None;
            this.Size = new System.Drawing.Size(300, 20);
            progressBar1.Style = ProgressBarStyle.Marquee;
            progressBar1.Dock = DockStyle.Fill;         
        }
можно это все в дизайнере настроить) но было лень создавать проект и прикриплять)
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:28
На счёт прогресса. Делите операцию на 100 частей выполняете по-очереди. На случай если у вас нечему в запросе делиться на 100 частей, то этот запрос не требует вообще прогресс бара.
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 16:29
Цитата Сообщение от phantom96 Посмотреть сообщение
На счёт прогресса. Делите операцию на 100 частей выполняете по-очереди. На случай если у вас нечему в запросе делиться на 100 частей, то этот запрос не требует вообще прогресс бара.
интерестно как вы поделите 1 селект который например выполняется около 2 мин.

как вы разделите их?? или подвесить прогу на 2 мин без всяких визуальных индикаторов, пользователь подумает залагало или нечего не проиходит... и закроет нафиг
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:39
Если Select *, его не поделить, а если нам нужно 10000 записей?

Добавлено через 1 минуту
Если надо сделать SELECT *, то можно сначала сделать SELECT COUNT(1) FROM название_таблицы
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 16:42
Цитата Сообщение от phantom96 Посмотреть сообщение
Если Select *, его не поделить, а если нам нужно 10000 записей?
ну даже если
C#
1
select top 10000 from table
он будет грузится секунд 7, если есть красивые индексы и т.п
а если все плохо это может дотянуть до секунд 15-20
простое подвисание проги на такое время не допустимо. сами должны понимать

даже 10 сек подвисания, уже атас
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:43
Нет, погодите. Вот нам надо
C#
1
select top 10000 from table
Мы же можем разделить это на 100
C#
1
select top 100 from table
Выполнить всё в бэкграунд воркере, форму заморозить, а прогресс бар заставить тикать.
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 16:49
Цитата Сообщение от phantom96 Посмотреть сообщение
Нет, погодите. Вот нам надо
C#
1
select top 10000 from table
Мы же можем разделить это на 100
C#
1
select top 100 from table
Выполнить всё в бэкграунд воркере, форму заморозить, а прогресс бар заставить тикать.
да, но этот момент уже обгаваривался, когда известно точно количество выбираемых записей просто все.

а когда какой

select * from tbl where id = @vId and Name = vName inner join че та там

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

проще в таких моментах, как я писал выше, делать через курсор, и отображать количество загруженных документов + их можно сразу обрабатывать.
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:52
Проще, но опять же
C#
1
SELECT COUNT(1) FROM название_таблицы
Узнаём кол-во>делим на части. Никто не говорил что будет легко)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
20.05.2013, 16:53
phantom96, то есть выбираем все таблицу, получаем число записей, а после этого опять проходим по всей таблице... зачем?
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:53
Или я что-то пропустил и SELECT COUNT тоже на 2 минуты подвесит окно?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
20.05.2013, 16:54
phantom96, а чем он лучше? лол, конечно подвесит
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 16:56
http://www.mysqlperformanceblo... -countcol/

Добавлено через 21 секунду
Врут, гады?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
20.05.2013, 16:58
phantom96,
In fact this example shows just 3 times performance difference
окей, предположим, что запрос длится 3 минуты, значит форма повиснет на 1 минуту (3/3 = 1) только чтоб показать красивый прогресс-бар. Круто че
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 17:00
Нет погодите, тут разница в 3 раза между COUNT(*) и COUNT(col). Сами же запросы, которые говорят нам о 7 миллионах записей требуют не больше 2-ух секунд. Вам их так жалко?

Добавлено через 39 секунд
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE TABLE `fact` (
  `i` INT(10) UNSIGNED NOT NULL,
  `val` INT(11) DEFAULT NULL,
  `val2` INT(10) UNSIGNED NOT NULL,
  KEY `i` (`i`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql> SELECT COUNT(*) FROM fact;
+----------+
| COUNT(*) |
+----------+
|  7340032 |
+----------+
1 ROW IN SET (0.00 sec)
mysql> SELECT COUNT(val) FROM fact;
+------------+
| COUNT(val) |
+------------+
|    7216582 |
+------------+
1 ROW IN SET (1.17 sec)
mysql> SELECT COUNT(val2) FROM fact;
+-------------+
| COUNT(val2) |
+-------------+
|     7340032 |
+-------------+
1 ROW IN SET (0.00 sec)
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 17:04
чисто теоритический:
вот запрос

MySQL
1
select * from tbl where id = @vId and Name = vName inner join че та там
выбрали с помощью count количество записей которое он вернет. ок

мм, а что дальше, мне интерестно как вы организуете логику дальше.
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 17:06
Теоретически - разделим на сто и будем с каждым новым запросом передвигать указатель, попутно выводя данные туда, куда нам нужно.

Добавлено через 24 секунды
На сто частей
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
20.05.2013, 17:10
phantom96, вы в курсе, что курсор работает на несколько порядков медленнее, чем табличная выборка? А как это сделать без курсора я даже не представляю

Добавлено через 2 минуты
Пример:
The following example compares two ways to solve a typical problem. The first uses a cursor solution and the second a set-based approach. The requirements are to calculate sales totals by order year, order month, and TerritoryID. The report must also show the total sales for the previous month in the same row. Every territory, year, and month possible must appear on the report even if there are no sales for a particular combination. To save typing, you might want to download the code from this book’s page at www.apress.com. Listing 7-28 uses a cursor and two nested WHILE loops to create a temp table with the totals. On my laptop, the code took 19 seconds to run.

The code in Listing 7-28 uses a cursor-based approach to populate a temp table for the report. The code creates a cursor that loops through the TerritoryID values. Inside the cursor loop, a WHILE loop of months is nested inside a WHILE loop of possible years. The code performs the calculations and inserts a row within the innermost loop. Finally, after the loops complete, two SELECT statements display the results. This code actually performs better than other code I have seen. It is not unusual to see code that not only loops through the territories but also loops through all the sales. Now try the example in Listing 7-29, which produces the same results much faster (about 1 second on my laptop).
Добавлено через 1 минуту
The point of this example is to show that most of the time a set-based approach can be found and is more efficient. It may take more practice and experience before you come up with this solution, but the more you work with T-SQL, the better you will get.
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 17:11
Цитата Сообщение от phantom96 Посмотреть сообщение
Теоретически - разделим на сто и будем с каждым новым запросом передвигать указатель, попутно выводя данные туда, куда нам нужно.

Добавлено через 24 секунды
На сто частей
смотрите сразу:
вы делите на 100 частей результат выборки. => его надо где то хранить. или знать посл результаты выборки

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

вдруг например во время 32 выборки у вас с базы удаляться все данные выборки. ваш прогресс бар завершится раньше чем необходимо(но это не оч большая беда)

тут куча подводных камней с таким поэтапным выбором, идея конечно не плохая, но на серьезные проекты не пойдет)

пысы: ну когда выборка с курсором, там все ясно как божий день)

Не по теме:

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

0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
20.05.2013, 17:17
C#
1
2
3
SELECT * 
FROM  `id` 
LIMIT x , x
?

Добавлено через 2 минуты

Не по теме:

А если у нас идёт 2-ух минутный запрос и в конце таблицы что-то удалилсь во время запроса, что с ним будет?Обычный SELECT *

0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
20.05.2013, 17:19
Цитата Сообщение от phantom96 Посмотреть сообщение
C#
1
2
3
SELECT * 
FROM  `id` 
LIMIT x , x
?

Добавлено через 2 минуты

Не по теме:

А если у нас идёт 2-ух минутный запрос и в конце таблицы что-то удалилсь во время запроса, что с ним будет?Обычный SELECT *

оно может и не в конце удалится, он как раз может изменятся в нашем лимите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2013, 17:19

Ожидания выполнения до конца или прогресс бар
Всем привет! Суть в том что при загрузке фотографий в БД , если закрыть окно - то фотографии загружаются не полностью.returnValue - дает...

Oledbconnection ожидание выполнения запроса к БД
Здравствуйте добрые люди. У меня есть проблема. я прогоняю скрипт к БД ms sql на 2000 серверах. и на некоторых периодами вылезает ошибка...

Ожидание выполнения метода [цепочка методов]
Здравствуйте. Мне нужно чтобы методы выполнялись друг за другом, ожидая выполнения предыдущего и не подключаясь к БД. Я использую БД...

База данных (Ожидание при открытие БД)
Создал БД SQLCE База данных имеет более 20 000 строк Для отображении данных используется Listview Время ожидание при загрузки...

прогресс бар, который отражал бы действительное положение дел
ВСЕМ привет, при длительном выполнении скрипта белый экран браузера выглядит не хорошо, как в таком случае организовать прогресс бар,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru