Цитата:
Сообщение от
mazzy
Я ждал такого замечания. Не ожидал от вас.
Приведенный мной код замедляет работу ТОЛЬКО одного пользователя.
НО приведенный мной код ускоряет работу НЕСКОЛЬКИХ одновременно работающих пользователей. Из-за снижения вероятности блокировок.
В большинстве случаев нужна одна транзакция - для целостности данных.
Если ожидается что транзакция будет слишком большой что чревато блокировками да и просто тормозит работу, надо стараться разбить её, в многих случаях это возможно.
Можно делать ttscommit/ttsbegin например после каждых 500 строк. Но за маленькие транзакции я бью по рукам
Чтобы не быть голословным - провёл тест (по 5 тестов на каждый вариант) на табличке inventTrans (14 тыс. записей). Добавил в неё текстовое поле 10 - в него пишу timenow.
В случае одной транзакции - 34,8 сек. (100%)
В случае маленьких транзакций с прогрессбаром - 68,3 сек (196%)
В случае маленьких транзакций без прогрессбара - 65,2 сек (187%)
Версия Axapta - 4.0 SP1
Цитата:
Сообщение от
mazzy
30% на визуализацию? ужас.
Пользуйтесь стандартным классом SysOperationProgress.
Разберитесь как и когда он обновляется и при каких условиях.
Обсуждение этого класса наверное оффтопик в этой ветке.
Как показал тест, действительно немного он тратит, зря я его так. Хотя может это в четвёрке стало быстрее. Мне запомнилась цифра в 30%, надо бы проверить на трёшке.