Страница 1 из 1

Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 май 2009, 14:47
veart
В Release Notes FB 2.1 заявлено, что можно отменять висячие запросы.
Cancel a Running Query
Runaway and long-running queries can now be cancelled from a separate connection....

Example
As a very rough example, the following statement will kill all statements currently running in the database, other
than any that belong to the separate connection that the SysAdmin is using himself:

delete from mon$statements where mon$attachment_id <> current_connection
Сколько не экспериментировал, не удалось ни разу.
Т.е. удалять с этой таблицы действительно можно (в отличие от MON$ATTACHMENTS, напр), но при обновлении запись там появляется снова.
Пробовал на CS и SS (оба 2.1)
Пробовал запросы запускать и от SYSDBA и от других пользователей, пробовал удалять свои и чужие запросы.
Пробовал удалять запросы, которые болтаются уже без программы, их запустившей (напр. можно запустить в IBExpert запрос в фоне и выйти, запрос останется висеть)
Может я чего-то не так понял? Кто-нибудь подобное делал?
Еще в последнем IBExpert-е есть инструмент для работы с мониторингом (Database Monitoring) - из него тоже ничего не получается. Там, кстати есть еще кнопки Shutdown Attachment и Commit/Rollback Transaction, тоже интересные функции. Наверное для FB 2.5?
Вобщем кто-нибудь в этом направлении что-нибудь делал?

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 май 2009, 15:02
kdv
Там, кстати есть еще кнопки Shutdown Attachment и Commit/Rollback Transaction, тоже интересные функции.
Database Monitoring впервые в IBExpert появился для InterBase 7.0 (таблицы tmp$). И именно в ИБ 7.0 уже была возможность коммита или отмены транзакции, снятия запроса, закрытия соединения.

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 май 2009, 15:50
hvlad
veart писал(а):Сколько не экспериментировал, не удалось ни разу.
Т.е. удалять с этой таблицы действительно можно (в отличие от MON$ATTACHMENTS, напр), но при обновлении запись там появляется снова.
Коммит сделай, чтобы данные мониторинга обновились

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 май 2009, 20:01
veart
hvlad, делал я коммит...
Сейчас на FB 2.5 CS пробовал с удалением запросов из MON$STATEMENTS - та же ерунда, ничего не меняется.
Хотя тут, в 2.5 дает еще из таблицы подключений (MON$ATTACHMENTS) удалять (В Firebird 2.5 Release Notes тоже написано, что добавлена такая возможность)
И вот с MON$ATTACHMENTS вроде что-то получается. И, кстати коммита делать не надо т.к. там написано что это не настоящие (виртуальные) таблицы и данные на самом деле нигде не обновляются. Т.е. после удаления из MON$ATTACHMENTS действительно второе соединение рвется сразу после удаления записи, даже без коммита, только в первом соединении это не видно - в таблице подключений те же строки, даже после коммита и обновления.
Вобщем надо эксперементировать, может даже и с MON$STATEMENTS что-то получится... Вроде что-то и работает, но как-то криво. Или я чего-то недоразобрался...

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 14 май 2009, 00:30
hvlad
Давай воспроизводимый пример. С isql.

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 14 май 2009, 06:30
veart
Давай воспроизводимый пример. С isql.
Сейчас сделал пример на isql - все работает...
Потом повторил все с IBExpert - тоже все работает.
Работает и с запросами, которые висят без родительского приложения (т.е. в том же isql запускаем запрос и закрываем isql).
И про коммит верно, это я неверно понял - коммит надо делать ДО удаления записи, а не после.

Чего я там вчера так натупил , что на 3х компах, на обеих архитектурах, и на версиях FB 2.1 и FB 2.5 не работало, не могу понять... :(
Так что, похоже, все работает, извиняюсь за наезды на FB. :D
Если все-таки удастся повторить или понять почему не работало вчера, отпишусь...

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 янв 2011, 11:44
Geydar
Уважаемые админы.

Только что перешел на FB 2.1.3 с 1.5
Поясните, плз, одну вещь: в MON$STATEMENTS есть несколько запросов со STATE = 1, которые стартовали несколько часов назад, по делу явно выполнились и должны были закрыться.
Соответственно транзакция активна.
Никакими силами, даже после прочтения этой темы, не удается закрыть эти запросы в IBExpert.
И странная фраза встретилась: "Коммит надо делать ДО удаления запроса...". Коммит чего?

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 янв 2011, 14:48
dimitr
насчет "должны были закрыться" - это проблема твоего приложения. Оно наверняка держит недофетченный курсор.

через MON$-таблицы закрыть запрос невозможно, можно лишь его остановить (если он выполняется в данный момент). MON$STATE = 1 вкупе с отсутствием реакции на DELETE FROM MON$STATEMENTS означает клиента, который висит (ничего не делает) между фетчами из открытого курсора. Т.к. курсор недофетчен, его селект активен (вместе с его транзакцией), а т.к. в данный момент фетч не выполняется, то и оставить его нельзя.

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 янв 2011, 17:13
Geydar
Что-то проясняется.
Далее: дело в том, что приложение у клиента закрыто. И в то же время я вижу, что есть сетевой коннект к серверу, который тоже не убивается.
Может такое быть, что курсор в этом случае где-то болтается?

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 13 янв 2011, 19:57
hvlad
Ты тр-цию, в которой прочитал MON$xxx коммитил ? Иначе она тебе будет показывать одно и то же ещё год ;)

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 14 янв 2011, 09:08
Geydar
Конечно!

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 14 янв 2011, 10:00
dimitr
Geydar писал(а):Далее: дело в том, что приложение у клиента закрыто.
не через task manager часом?
Geydar писал(а):И в то же время я вижу, что есть сетевой коннект к серверу, который тоже не убивается. Может такое быть, что курсор в этом случае где-то болтается?
конечно. Жди пока сервер обнаружит потерю связи с клиентом (http://ibase.ru/devinfo/keepalive.htm), тогда он закроет и коннект и транзакцию и все открытые курсоры.

Re: Не работает delete from MON$STATEMENTS; FB 2.1

Добавлено: 14 янв 2011, 10:11
Geydar
Вот это полезная статья.

Спасибо!