Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
В одном проекте показывает выполнение SQL-запросов, а в другом - нет. Есть ли какая-то настройка?
------------------ "Veni, vidi, vici!"(с) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
sphinx Сообщений: 31166 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Кажется SET TALK ON
------------------ "Veni, vidi, vici!"(с) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Кажется это через SET TALK показывается. Когда-то тут была такая тема, я даже помнится красивое окошко для вывода там нарисовал в качестве примера. Где-то у себя в архивах может даже и сохранил. Хотя можно думаю и поиском найти, если есть желание глянуть. Ну или быстрее может даже самому нарисовать виндоуз-подобное окошко для вывода, слегка покрутив параметры команды создания окна - в итоге можно получить для него вполне даже виндовский вид. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Ты ездишь быстрее, чем я бегаю. ("Ирония судьбы или с легким паром")
------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Подсовывать свой прогрессбар для SQL запросов не стоит. Более того, может быть даже полезно и штатный отключить - какие-никакие 5% времени это сэкономит. Хотя он и так не шибко напряжный, т.к. на сях нарисован а не на фоксе, и даже не показывается для "быстроиграющих" запросов...
------------------ WBR, Igor |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Я думаю тут стоит оценить требования задачи.
Отправляя запрос на SQL-сервер вы уподобляетесь жене моряка (да простят суженные наших войнов за сравнение). Мы не можем управлять процессом исполнения запроса и, только лишь, вольны ожидать ответа от сервера. Наверное можно установить клиенту таймаут ожидания ответа. Такую задачу решаю другим путем. Стараюсь избегать монструозных запросов результат коих можно ожидать многими минутами. Разбивая решение задачи, на стороне клиента, на части исполняющие последовательно некую цепочку запросов можно и прогресс-бар показать. Я прекрасно понимаю, что один большой запрос это красиво! Но кому эта красота видна кроме кодера? Пользователю уж точно нужна индикация исполнения его желаний, а не неизвестность. ------------------ Говорить стоит лишь для тех, кто слушает. |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
У меня такой вопрос - с помощью какого механизма выполняется условие непротиворечивости возвращаемых сервером данных для разбитых на части запросов? (надеюсь не "подъёмом" уровня изоляции) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
В большинстве случаев такая схема (много мелких запросов к серверу и куча обработки на клиенте) будет работать заметно медленнее чем один монстр-запрос на сервере. Посему делать так я крайне не советую. Вместо прогрессбара можно просто анимированную картинку показывать, чтобы юзер не думал что прога зависла.
------------------ WBR, Igor |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Практика показывает, что простая анимация не менее раздражающа, чем неведение.
Ты подошел к перекрестку и нажал на педальку для переключения светофора. Индикатор начал мигать.... Сколько ждать переход от мигания к зеленому индикатору не понятно. Ритм мигания не отражает прогресса исполнения запроса. Ты себе получил на клиенте "гифку" и она крутится .... да никакого отношения к прогрессу она не имеет, ибо даже умерший сервер никак на гифку не повлияет. Сидите и ждите... Но в статистическом плане 20 отдельных запросов конечно дольше на клиента смогут доставить ответ, но хотя бы можно будет отловить по таймауту, что 17-й запрос в ожидаемые 20 секунд не доставил ответ. А прогресс-бар пользователю 16 шагов отразил... и пользователь был спокоен. комманда "фас" исполняется и собаки бегут. Со светофором конечно пример спорный, ибо чаще всего это система автономная и незнание наблюдателя на время мигания никак не влияет. Но с психологической точки зрения задача выполняемая в 40 минут и процесс исполнения которой отражается неким индикатором в виде шагов более приемлема, чем исполнение запроса за 30 минут если индикатором была крутилка которая к процессу не имеет отношения. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 3 раз(а). Последнее : Vedmak, 24.08.17 00:46 |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Изоляция и транзакция - это одно и тоже (т.е. "пока я спрашиваю у БД, никто не может там менять") ? |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Неа))) Само понятие транзакции, это сохранение данных все целиком. Если что то не срослось, то все на фиг. А изоляция, это изолированность незавершенной транзакции, от разного вида попыток, достучаться до данных, возможно затронутых этой транзакцией. И уровень изоляции, часто выбирает программист (администратор БД?) Как то так) ------------------ |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет и нет. Уровень изоляции это, если так можно выразится, "свойство" транзакции. Транзакция может быть с разными уровнями изоляции. Некоторые уровни изоляции позволяют менять данные в БД, да так что ЭТА транзакция увидит такие изменения. Есть "совсем плохой" уровень - когда даже просто повторное чтение одной и той же записи будет возвращать каждый раз "новые" результаты. Есть чуть получше - когда то что уже было запрошено до завершения транзакции не будет изменено (только в её рамках! для других транзакций - вполне себе можно менять, а мы видим "то что было на момент первого запроса"). Есть вообще "железобетонный" уровень - когда мы видим согласованное состояние данных на определённый момент времени (грубо говоря "снимок" данных на момент начала транзакции). Естественно что для РАЗНЫХ транзакций обеспечить даже второй уровень изоляции затруднительно. Хотя в теории возможно - так называемые ретроспективные запросы. Когда мы ЯВНО говорим что хотим видеть данные на момент времени 12:00 - независимо от того что сейчас уже 13:10 и в БД произошла куча изменений. "Никто не может менять то что я читаю" - это стратегия блокировочников. Версионники не делают такого - там нельзя менять только то что другие МЕНЯЮТ. А то что другие читают - вполне можно менять. "Читатель", конечно, этих изменений не увидит, ему подсунут "версию данных на момент начала ..." а уж момент начала транзакции, или только текущего оператора (скажем пятого SELECT из десятка SQL инструкций внутри транзакции) - это управляется как раз настройкой уровня изоляции. ------------------ WBR, Igor |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Собственно Игорь уже основу рассказал. Уточню, транзакция - это процесс (как движение по дороге), а изоляция - это средство достижения в процессе (те двигаться можно шагом, бегом, ползком, прыжком итд). Применительно к БД, транзакция - это процесс доступа к данным (select, update, delete), а изоляция - это каким образом сервер получает необходимые данные. Таким образом, для соединения "задаётся" какой-то, либо дефолтный уровень изоляции (например не разрешающий читать "грязные"/не зафиксированные данные) и все запросы будут выполняться с этим уровнем изоляции, тем не менее в одной транзакции могут быть несколько уровней изоляции (это определяется хинтами/подсказками в запросе/DML ), например для вычисления баланса на счёте необходимо заблокировать текущий остаток и одновременно для поиска валюты счета совсем необязательно в такой транзакции так же жестко блокировать справочник валют. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Штатный Прогрессбар при выполнении SQL-запроса | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это всё ещё и от СУБД зависит. "Абстрактно" оно всё без хинтов, и НЕ допускается на уровне одной транзакции разные степени изоляции. Впрочем, в википедии теория вроде как доступно изложена была... На практике то да, по разному делается. В фоксе, к примеру, вообще никак не делается - чисто "грязное чтение" и привет Ну разче что сам вручную всё позаблокируешь, но это уже не "задание уровня изоляции", а ручная реализация такого зверя...
------------------ WBR, Igor |
© 2000-2024 Fox Club  |