powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
25 сообщений из 270, страница 1 из 11
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425830
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем

Решил добавить возможность рубануть выполняющийся запрос через MON$STATEMENTS.
Открываю, а в полях MON$TRANSACTION_ID, MON$TIMESTAMP null-ы
в таблице транзакций
Код: plsql
1.
2.
3.
4.
5.
MON$TRANSACTION_ID	MON$ATTACHMENT_ID	MON$STATE	MON$TIMESTAMP	MON$TOP_TRANSACTION	MON$OLDEST_TRANSACTION	MON$OLDEST_ACTIVE	MON$ISOLATION_MODE	MON$LOCK_TIMEOUT	MON$READ_ONLY	MON$AUTO_COMMIT	MON$AUTO_UNDO	MON$STAT_ID
25588	671	1	13.10.13 23:37:43	25588	16567	25577	2	0	0	0	1	3
25583	671	1	13.10.13 23:37:43	25583	16567	25577	2	0	0	0	1	4
25577	670	1	13.10.13 23:37:39	25577	16567	25553	3	-1	0	0	1	9
25570	670	1	13.10.13 23:37:23	25570	16567	25553	2	-1	1	0	1	10



Это как так?

И как тогда определить какой STATEMENT грохнуть?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425831
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На последней сборке тоже самое Firebird-2.5.3.26709-0_Win32.7z
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425850
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я неправильно понял. Разъясните

1.Стартую транзакцию
2.Выполняю запрос он возвращает всегда 1 строку
эмулирую зависание вывожу сообщение с кнопкой ОК
пока не нажму на ОК транзакция не завершится

Получается запрос выполнился и по этой причине в таблице NULL-ы?
Если да то тогда как остановить ту транзакцию на которую грешу, что она висит?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425851
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транзакция - вещь пассивная, "висеть" она не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425861
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТранзакция - вещь пассивная, "висеть" она не может.


Ясен перец в ожидании. Вопрос как убить ее. В IB вроде как можно через таблицы tmp, в FB получаю

delete from MON$TRANSACTIONS where MON$TRANSACTION_ID ...

The INSERT, UPDATE, DELETE, DDL or authorization statement cannot be executed because the transaction is inquiry only.
Operation not supported.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425862
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикВопрос как убить ее.
Вместе с коннектом, иначе нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425870
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

вместо транзакции убивай оператор.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425873
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

вместо транзакции убивай оператор.

Это не оператор виноват, а сбербанк, со своим глючным ПО на терминалах банковских карт. Как всегда придется извращаться.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425874
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикКак всегда придется извращаться.
Тебе повторить как должна работать программа, чтобы глюки левого софта не создавали
проблем в базе?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425883
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикКак всегда придется извращаться.
Тебе повторить как должна работать программа, чтобы глюки левого софта не создавали
проблем в базе?..


Я тебя уже слышал в прошлый раз. У нас задачи и понятия разные. В некоторых местах мне надо именно через транзакцию делать. То что ты предложи я сто лет как использую.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425909
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикВопрос как убить ее.
Вместе с коннектом, иначе нельзя.


Случаем не в курсе, в тройке будет возможность, не весь коннект рубить, а только транзакцию?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425911
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

убить транзакцию нельзя. Её можно либо подтвердить, либо откатить.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425916
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

убить транзакцию нельзя. Её можно либо подтвердить, либо откатить.

"Убить" = "откатить", т.к. нельзя завершать то не зная что ;). Цель зависшие срубить быстро. Такое бывает редко но метко.

Ни кто из клиентов учить не хотят всякие настройки серверов и сетей, вот и извращаемся. К примеру дома у меня даже не получается сделать так чтобы процессы зависшие оставались, а клиенты умудряются. Только программу срублю в диспетчере на удаленном ПК тут же процесс сервера выгружается.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425948
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтикмне надо именно через транзакцию делать
Как же меня бесят такие заявления...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425958
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик > мне надо именно через транзакцию делать

А для чего конкретно? Т.е. прикладная цель какая?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426002
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамприкладная цель какая?
Да рассказывал он уже в другом топике: нет никакой прикладной цели, он лучше выдумать не смог.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426008
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКак же меня бесят такие заявления...И это твоя слабость :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426045
Евгений БолтикРешил добавить возможность рубануть выполняющийся запрос через MON$STATEMENTS.
Открываю, а в полях MON$TRANSACTION_ID, MON$TIMESTAMP null-ы <...>
И как тогда определить какой STATEMENT грохнуть?Эти два поля (MON$TRANSACTION_ID, MON$TIMESTAMP) будут not-null только во время, пока выполняется стейтмент. Как только он заканчивается, они обNULLяются. Но тогда и уже срубать эту транзакцию "не за что": ведь она уже не грузит сервер, а простаивает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
-- это результат запроса, когда в соседнем окне  еще идёт  "долгий стейтмент":
SQL> commit; select * from mon$statements s where s.mon$attachment_id<>current_connection;

MON$STATEMENT_ID                158
MON$ATTACHMENT_ID               15
 MON$TRANSACTION_ID              301
MON$STATE                       1
MON$TIMESTAMP                   2013-10-14 07:11:24.5460 
MON$SQL_TEXT                    0:4
insert into t select gen_id(g,1) from rdb$types,rdb$types,rdb$types
MON$STAT_ID                     9

MON$STATEMENT_ID                26
MON$ATTACHMENT_ID               15
MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    <null>
MON$STAT_ID                     10

-- а это - то же самое, но когда этот "долгий стейтмент"  уже завершился  (но транзакция его еще не зафиксирована):
SQL> commit; select * from mon$statements s where s.mon$attachment_id<>current_connection;

MON$STATEMENT_ID                158
MON$ATTACHMENT_ID               15
MON$TRANSACTION_ID              <null>
MON$STATE                        0 
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    0:4
insert into t select gen_id(g,1) from rdb$types,rdb$types,rdb$types
MON$STAT_ID                     9

MON$STATEMENT_ID                26
MON$ATTACHMENT_ID               15
 MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null> 
MON$SQL_TEXT                    <null>
MON$STAT_ID                     10
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426173
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

Про откат транзакций через mon$transactions. Вроде бы изначально при проектировании mon таблиц рассматривалась такая функциональность, но потом по каким-то причинам было решено её не делать. Старожилы или разработчики могут ответить подробнее отчего так.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426227
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, если кто-либо сможет рассказать, чем оно принципиально лучше отстрела активного запроса (что в большинстве вменяемых приложений автоматически приводит к роллбеку активной транзакции)...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426234
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

я могу придумать только убиение тр-ций, потерянных кривым приложением, без отстрела собственно коннекта такого приложения. Дабы не удерживать OIT\OST.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426250
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

зачитывается. Хотя таким приложениям для профилактики лучше сразу коннект отстреливать, мало ли что там еще "теряется" :-)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426261
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но для этого, наверное, лучше (?) сделать таймаут для неактивных тр-ций (а так же для выполняющихся запросов и неактивных коннектов).

Например ввести такие таймауты и действия по их истечению:
- таймаут для выполняющегося запроса
по его истечению запрос останавливается, его изменения откатываются

- таймаут для неактивной тр-ции (т.е. такой тр-ции, в которой нет выполняющихся запросов)
по его истечению тр-ция откатывается (или подтверждается ?)

- таймаут для неактивного коннекта (т.е. такого коннекта, в котором нет выполняющихся запросов)
по его истечению все тр-ции коннекта откатываются (или подтверждаются ?) и сам коннект удаляется
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426268
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

А это разве для тройки не запланировано?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426289
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

запланировано, но сначала нужно об этом подумать. Почему не сейчас ? :)
...
Рейтинг: 0 / 0
25 сообщений из 270, страница 1 из 11
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]