Итак, я узнал, что создать непрозрачную задачу для SQL-запросов не совсем просто. Поэтому я попытался придумать альтернативное решение, чтобы указать, когда будет выполнена задача. Я решил, что могу потратить время на выполнение одного запроса в базе данных, а затем использовать эту информацию для создания оценки в зависимости от количества запросов, которые необходимо выполнить, а затем создать индикатор выполнения этой информации. Я знаю, что это не будет на 100% надежное решение, потому что, если что-то пойдет не так, оно все равно покажет индикатор выполнения, но, по крайней мере, даст пользователю некоторое указание, когда работа будет выполнена, вместо того, чтобы просто иметь загрузочный счетчик.Progressbar в SQL
Есть ли лучшее решение этой проблемы?
редактировать, чтобы ответить на некоторые вопросы
Это функция обновления, которая занимает много времени. У меня есть 15.000 входных данных в базе данных, и я должен обновить все 15.000 через API. Поэтому сначала я должен вытащить идентификатор всех этих пользователей и использовать их с API для получения обновленной информации, а затем я должен выполнить все 15 000 запросов с обновленной информацией. Все это требует времени. Я сомневаюсь, что это можно сделать быстро. С базой данных из 15 000 запросов мне потребовалось около 2 часов. Я не считаю, что счетчик в течение 2 часов без указания того, когда это будет сделано, является реальным. Мне нужна какая-то оценка.
Обратите внимание, что обновление базы данных - это то, что будет сделано очень редко. Например, может быть, раз в неделю пользователь будет обновлять базу данных.
Я полагаю, вы уже видели этот http://stackoverflow.com/a/617271/2042240 – nowhere
Вы сказали это сами - это не надежное решение. Разве не лучше сообщить пользователю, что задача выполняется, и просто указать, что она продолжается? Баланс прогресса просто путает пользователей, и это - метрическая тонна работы, чтобы вы могли заставить ее работать. Вы даже не можете оценить, сколько времени может потребоваться запрос. Я просто создаю визуальный уведомитель о том, что что-то сделано, без блокировки всего пользовательского интерфейса. – Mjh
Есть ли лучшее решение? Ну, если я подумаю о баре прогресса для SQL-запросов, я бы начал с оптимизации моих запросов. Очевидно, сейчас они слишком медленны. Используйте 'EXPLAIN ...', чтобы узнать, где узкие места. – feeela