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

Решил добавить возможность рубануть выполняющийся запрос через 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
13.10.2013, 19:56
    #38425831
Евгений Болтик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
На последней сборке тоже самое Firebird-2.5.3.26709-0_Win32.7z
...
Рейтинг: 0 / 0
13.10.2013, 20:27
    #38425850
Евгений Болтик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Может я неправильно понял. Разъясните

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

Получается запрос выполнился и по этой причине в таблице NULL-ы?
Если да то тогда как остановить ту транзакцию на которую грешу, что она висит?
...
Рейтинг: 0 / 0
13.10.2013, 20:32
    #38425851
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Транзакция - вещь пассивная, "висеть" она не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.10.2013, 20:58
    #38425861
Евгений Болтик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
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
13.10.2013, 21:01
    #38425862
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Евгений БолтикВопрос как убить ее.
Вместе с коннектом, иначе нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.10.2013, 21:20
    #38425870
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Евгений Болтик,

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

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

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


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


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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.10.2013, 01:17
    #38426002
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Гаджимурадов Рустамприкладная цель какая?
Да рассказывал он уже в другом топике: нет никакой прикладной цели, он лучше выдумать не смог.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.10.2013, 01:34
    #38426008
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Dimitry SibiryakovКак же меня бесят такие заявления...И это твоя слабость :)
...
Рейтинг: 0 / 0
14.10.2013, 07:20
    #38426045
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Евгений БолтикРешил добавить возможность рубануть выполняющийся запрос через 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
14.10.2013, 10:46
    #38426173
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Евгений Болтик,

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

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

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

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

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

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

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

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


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