:: Visual Foxpro, Foxpro for DOS
Штатный Прогрессбар при выполнении SQL-запроса
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
В одном проекте показывает выполнение SQL-запросов, а в другом - нет. Есть ли какая-то настройка?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Кажется SET TALK ON


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
sphinx
В одном проекте показывает выполнение SQL-запросов, а в другом - нет. Есть ли какая-то настройка?

Кажется это через SET TALK показывается. Когда-то тут была такая тема, я даже помнится красивое окошко для вывода там нарисовал в качестве примера. Где-то у себя в архивах может даже и сохранил. Хотя можно думаю и поиском найти, если есть желание глянуть. Ну или быстрее может даже самому нарисовать виндоуз-подобное окошко для вывода, слегка покрутив параметры команды создания окна - в итоге можно получить для него вполне даже виндовский вид.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Ты ездишь быстрее, чем я бегаю. ("Ирония судьбы или с легким паром")



------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Подсовывать свой прогрессбар для SQL запросов не стоит. Более того, может быть даже полезно и штатный отключить - какие-никакие 5% времени это сэкономит. Хотя он и так не шибко напряжный, т.к. на сях нарисован а не на фоксе, и даже не показывается для "быстроиграющих" запросов...


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Я думаю тут стоит оценить требования задачи.

Отправляя запрос на SQL-сервер вы уподобляетесь жене моряка (да простят суженные наших войнов за сравнение). Мы не можем управлять процессом исполнения запроса и, только лишь, вольны ожидать ответа от сервера. Наверное можно установить клиенту таймаут ожидания ответа.

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

Разбивая решение задачи, на стороне клиента, на части исполняющие последовательно некую цепочку запросов можно и прогресс-бар показать.

Я прекрасно понимаю, что один большой запрос это красиво! Но кому эта красота видна кроме кодера? Пользователю уж точно нужна индикация исполнения его желаний, а не неизвестность.


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Vedmak
Такую задачу решаю другим путем. Стараюсь избегать монструозных запросов результат коих можно ожидать многими минутами.

Разбивая решение задачи, на стороне клиента, на части исполняющие последовательно некую цепочку запросов можно и прогресс-бар показать.


У меня такой вопрос - с помощью какого механизма выполняется условие непротиворечивости возвращаемых сервером данных для разбитых на части запросов? (надеюсь не "подъёмом" уровня изоляции)


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
В большинстве случаев такая схема (много мелких запросов к серверу и куча обработки на клиенте) будет работать заметно медленнее чем один монстр-запрос на сервере. Посему делать так я крайне не советую. Вместо прогрессбара можно просто анимированную картинку показывать, чтобы юзер не думал что прога зависла.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Практика показывает, что простая анимация не менее раздражающа, чем неведение.

Ты подошел к перекрестку и нажал на педальку для переключения светофора. Индикатор начал мигать.... Сколько ждать переход от мигания к зеленому индикатору не понятно. Ритм мигания не отражает прогресса исполнения запроса.

Ты себе получил на клиенте "гифку" и она крутится .... да никакого отношения к прогрессу она не имеет, ибо даже умерший сервер никак на гифку не повлияет. Сидите и ждите...

Но в статистическом плане 20 отдельных запросов конечно дольше на клиента смогут доставить ответ, но хотя бы можно будет отловить по таймауту, что 17-й запрос в ожидаемые 20 секунд не доставил ответ. А прогресс-бар пользователю 16 шагов отразил... и пользователь был спокоен. комманда "фас" исполняется и собаки бегут.

Со светофором конечно пример спорный, ибо чаще всего это система автономная и незнание наблюдателя на время мигания никак не влияет. Но с психологической точки зрения задача выполняемая в 40 минут и процесс исполнения которой отражается неким индикатором в виде шагов более приемлема, чем исполнение запроса за 30 минут если индикатором была крутилка которая к процессу не имеет отношения.


------------------
Говорить стоит лишь для тех, кто слушает.




Исправлено 3 раз(а). Последнее : Vedmak, 24.08.17 00:46
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
PaulWist
Vedmak
Такую задачу решаю другим путем. Стараюсь избегать монструозных запросов результат коих можно ожидать многими минутами.

Разбивая решение задачи, на стороне клиента, на части исполняющие последовательно некую цепочку запросов можно и прогресс-бар показать.


У меня такой вопрос - с помощью какого механизма выполняется условие непротиворечивости возвращаемых сервером данных для разбитых на части запросов? (надеюсь не "подъёмом" уровня изоляции)
Изоляция и транзакция - это одно и тоже (т.е. "пока я спрашиваю у БД, никто не может там менять") ?
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
of63
Изоляция и транзакция - это одно и тоже (т.е. "пока я спрашиваю у БД, никто не может там менять") ?
Неа)))
Само понятие транзакции, это сохранение данных все целиком. Если что то не срослось, то все на фиг.
А изоляция, это изолированность незавершенной транзакции, от разного вида попыток, достучаться до данных, возможно затронутых этой транзакцией.
И уровень изоляции, часто выбирает программист (администратор БД?)
Как то так)


------------------
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
Изоляция и транзакция - это одно и тоже (т.е. "пока я спрашиваю у БД, никто не может там менять") ?

Нет и нет.

Уровень изоляции это, если так можно выразится, "свойство" транзакции. Транзакция может быть с разными уровнями изоляции. Некоторые уровни изоляции позволяют менять данные в БД, да так что ЭТА транзакция увидит такие изменения.
Есть "совсем плохой" уровень - когда даже просто повторное чтение одной и той же записи будет возвращать каждый раз "новые" результаты.
Есть чуть получше - когда то что уже было запрошено до завершения транзакции не будет изменено (только в её рамках! для других транзакций - вполне себе можно менять, а мы видим "то что было на момент первого запроса").
Есть вообще "железобетонный" уровень - когда мы видим согласованное состояние данных на определённый момент времени (грубо говоря "снимок" данных на момент начала транзакции).
Естественно что для РАЗНЫХ транзакций обеспечить даже второй уровень изоляции затруднительно. Хотя в теории возможно - так называемые ретроспективные запросы. Когда мы ЯВНО говорим что хотим видеть данные на момент времени 12:00 - независимо от того что сейчас уже 13:10 и в БД произошла куча изменений.

"Никто не может менять то что я читаю" - это стратегия блокировочников. Версионники не делают такого - там нельзя менять только то что другие МЕНЯЮТ. А то что другие читают - вполне можно менять. "Читатель", конечно, этих изменений не увидит, ему подсунут "версию данных на момент начала ..." а уж момент начала транзакции, или только текущего оператора (скажем пятого SELECT из десятка SQL инструкций внутри транзакции) - это управляется как раз настройкой уровня изоляции.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
of63
Изоляция и транзакция - это одно и тоже (т.е. "пока я спрашиваю у БД, никто не может там менять") ?

Собственно Игорь уже основу рассказал.

Уточню, транзакция - это процесс (как движение по дороге), а изоляция - это средство достижения в процессе (те двигаться можно шагом, бегом, ползком, прыжком итд).

Применительно к БД, транзакция - это процесс доступа к данным (select, update, delete), а изоляция - это каким образом сервер получает необходимые данные.

Таким образом, для соединения "задаётся" какой-то, либо дефолтный уровень изоляции (например не разрешающий читать "грязные"/не зафиксированные данные) и все запросы будут выполняться с этим уровнем изоляции, тем не менее в одной транзакции могут быть несколько уровней изоляции (это определяется хинтами/подсказками в запросе/DML ), например для вычисления баланса на счёте необходимо заблокировать текущий остаток и одновременно для поиска валюты счета совсем необязательно в такой транзакции так же жестко блокировать справочник валют.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Штатный Прогрессбар при выполнении SQL-запроса
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Это всё ещё и от СУБД зависит. "Абстрактно" оно всё без хинтов, и НЕ допускается на уровне одной транзакции разные степени изоляции. Впрочем, в википедии теория вроде как доступно изложена была... На практике то да, по разному делается. В фоксе, к примеру, вообще никак не делается - чисто "грязное чтение" и привет Ну разче что сам вручную всё позаблокируешь, но это уже не "задание уровня изоляции", а ручная реализация такого зверя...


------------------
WBR, Igor
Ratings: 0 negative/0 positive


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

On-line: 27 (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика