Я не большой программист VB, но мне поручено поддерживать / улучшать настольное приложение VB6, которое использует Sybase ASE в качестве бэк-энда. Это приложение имеет около 500 пользователей.
Недавно я добавил функциональность в это приложение, которое выполняет дополнительную вставку / обновление одной строки в базе данных, при этом ключевое поле является номером транзакции, а поле индексируется. В обновляемой таблице обычно содержится около 6000 записей, поскольку записи удаляются по завершении транзакций. После развертывания приложение работало в течение полутора дней, прежде чем пользователи сообщали о низкой производительности.
В конце концов, мы отследили проблему производительности до блокировки таблицы в базе данных, и нам пришлось откатиться к предыдущей версии приложения. Первый день использования был в понедельник, который, как правило, является очень тяжелым днем для использования системы, поэтому я запутался, почему проблема не появилась в тот день.
В коде, который был на месте, есть вызов для запуска транзакции Sybase. Внутри блока между BeginTrans и CommitTrans есть вызов DLL-файла, который обновляет базу данных. Я поместил мой новый код в модуль класса в DLL.
Я не понимаю, почему одна вставка / обновление одной строки может вызвать такую проблему, тем более что система работала нормально до изменения. Возможно ли, что я раскрыл здесь большую проблему? Или что мне просто нужно пересмотреть мой подход?
Спасибо всем, кто оказался в подобной ситуации и может дать совет.