progressbar для sql запроса

SLP

Guest
progressbar для sql запроса

Я делаю sql запрос в php проге.
Возможно ли сделать ProgressBar c процентами выполнения этого запроса (например с помощью HTML-progress2) или я хочу невозможного ?
 

alexhemp

Новичок
SLP

Тебе это не нужно. Если у тебя запрос выполняется так долго, что тебе нужен прогресс - делай его по Cron-у и кэшируй результат.
 

SLP

Guest
нет надо в реальном времени - базы данных большие
 

[DAN]

Старожил PHPClub
разбивай запрос на подзапросы с limit, offset и юзай прогрессбар на здоровье.
"Запрогрессить" запрос целиком, не изврящаясь при этом, не получится.

-~{}~ 26.12.05 17:12:

alexhemp, откуда такое глубокое убеждение?
Или каждый день обрабатываете гигабайтные логи за полсекунды?
 

alexhemp

Новичок
[DAN]
Никакого смысла в гигабайтных логах в SQL базах не вижу.

Безусловно, все зависит от задачи. Тем не менее - если человек должен указывать параметры, а потом долго ждать - что-то не так с архитектурой. Нужно делать статистические выборки - отлично - каждые пол часа их считайте, а потом с live-логом работайте (за последние полчаса только).

Не представляю просто гигабайты постоянно изменяющихся данных.
 

[DAN]

Старожил PHPClub
Возможно, просто не приходилось сталкиваться с такими объемами данных.
Интересно узнать методу статистической выборки при следующих условиях:
1) Число значимых параметров в кортеже 5-7
2) Число параметров выборки 6-8
3) Подмножество стат. выборки от 0.1 до 30% генеральной совокупности.

Каким образом представляется возможным строить статистику?
 

alexhemp

Новичок
[DAN]

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

Я между прочим не утверждал что отчеты не нужны, я утверждаю что прогресс-бар для длительного запроса - не нужен. В Web-приложении не должно быть длительных запросов - не надо заставлять пользователя бесцельно ждать.

Их можно переносить в фон (по крону), и если очень хочется - выполнять их с LIMIT-ом и писать в служебную таблицу степень готовности - откуда уже и показывать юзерам степерь выполнения их заданий. Результаты кэшировать и не выполнять 2 раза рассчет если исходные данные не менялись.
Вдруг человек вернуться захочет к отчету.

Мне вообще хочется посмотреть на человека, что способен такое количество данных осмыслить, при таком количестве данных и параметров ;-)
Т.е. сложный запрос ставится в очередь,
 

[DAN]

Старожил PHPClub
alexhemp, откуда такое убеждение, что речь идет об отчетах? Есть масса задач, где необходимо время для обработки данных, нужных в конкретный момент времени.

Человеку нужен прогресс-бар, а не рекомендации "ведущих собаководов". Если встанет вопрос об оптимизации запросов, он задаст его совершенно не в этом топике.

>хочется посмотреть на человека
извольте ознакомиться с файлами оцененных ядерных данных.
 

neko

tеam neko
это маловероятно что лимит вам чем-то поможет.
подумайте о, например, агрегатных функциях.

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

кстати в стандартной mysql-евской либе нет насколько я знаю даже асинхронных запросов.
 
Сверху