Избегайте тайм-аута MySQL запроса - PullRequest
0 голосов
/ 06 августа 2020

Я обращаюсь к базе данных MySQL, используя стандартный пакет MySql .Data из Oracle. Каждые несколько выпусков приложения нам необходимо настраивать схему базы данных (например, клиент хотел, чтобы DECIMAL (10,2) был изменен на DECIMAL (10,3)), которую приложение обрабатывает, отправляя необходимый оператор SQL. Это работает, за исключением того, что в большой базе данных обновление схемы может быть довольно длительной операцией и истекать по времени.

Очевидное решение - увеличить время ожидания, но это приводит к относительно плохому взаимодействию с пользователем - я могу выведите диалоговое окно с надписью «обновление, пожалуйста, подождите», а затем просто сидите без какого-либо индикатора прогресса.

Есть ли способ получить какую-то обратную связь от сервера MySQL, что это 10% завершено, выполнено 20% и т.д. c., что я могу передать пользователю?

1 Ответ

1 голос
/ 06 августа 2020

Есть два способа решить эту проблему.

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

Однако, если вы действительно беспокоитесь о пользовательском опыте и хотите дать более качественную обратную связь, тогда вам нужно будет попробовать некоторые метрики. Взяв ваш пример DECIMAL, рассчитайте время изменения на разных счетчиках строк. 100 000 строк, миллион строк и т.д. c и c. Это даст вам время, которое может занять некоторое время. Обратите внимание, другое оборудование, другие вещи, работающие на компьютере, вы никогда не получите его в точности. Но у вас есть оценка .

Когда у вас есть оценка и вы знаете количество строк, вы можете создать реальный индикатор выполнения на основе этих оценок. И если он достигает 100%, а реальная операция не завершена, или если она завершается до того, как вы дойдете до 100% (и вы можете мгновенно перепрыгнуть планку!), Это ... что-то.

Лично я бы выбрал go вариант один и, возможно, добавил бы полезное сообщение, которое обычно делает Windows. "Это может занять несколько минут". Может быть, добавить «Сейчас прекрасное время для кофе!». И симпатичный маленький анимированный гиф :)

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