Всем доброго времени суток,
при работе с таблицами с большим количеством данных иногда возникает ситуация что после интенсивного изменения данных возникает необходимость таблицу удалить. Если транзакция nowait то firebird может вывалить (а может и не вывалить) ошибку lock конфликта при обновлении метаданных. Выход использовать wait транзакцию. Но не во всех фреймворках можно поменять тип транзакции (в данном случае у клиента рукописный свой фреймворк, лезть в который и что то менять себе дороже).
Вопрос, можно как то запросом выяснить что таблица уже освободилась и возможно обновление метаданных или её удаление. Сразу оговорюсь что сие происходит при миграции данных из одной версии в другую, поэтому конкурирующих соединений нет.
Спасибо.
Обновление метаданных, wait и nowait транзакции
Re: Обновление метаданных, wait и nowait транзакции
А о каких именно версиях речь ?сие происходит при миграции данных из одной версии в другую
http://www.ibase.ru/ibtrans
Re: Обновление метаданных, wait и nowait транзакции
версии имеются ввиду самой программы. А FB версии 3 и выше.
Re: Обновление метаданных, wait и nowait транзакции
Если конкурирующих коннектов нет, операция редкая, а фреймворк сам себе на уме, то я бы просто сделал реконнект.
А исходно проблема, вероятно, в таком:
- ходим по собственным ногам. В приложении есть какие-то активные транзакции которые смотрели ту таблицу, и соответственно, хотят продолжать ее видеть.
- после удаления большого количества данных запускается сборка мусора, которая и блокирует удаление таблицы.
В обоих случаях должен помочь реконнект.
А исходно проблема, вероятно, в таком:
- ходим по собственным ногам. В приложении есть какие-то активные транзакции которые смотрели ту таблицу, и соответственно, хотят продолжать ее видеть.
- после удаления большого количества данных запускается сборка мусора, которая и блокирует удаление таблицы.
В обоих случаях должен помочь реконнект.
Re: Обновление метаданных, wait и nowait транзакции
можно конечно пересоединиться, но хотелось бы штатное решение найти. Может кто подскажет. Имя таблиц которые могут проблему устроить известно.