Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a / 11 сообщений из 11, страница 1 из 1
28.06.2011, 00:35
    #37326644
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
hi all

Пишу сюда, т.к. nntp на этой машине не доступен, а автор IBE здесь регулярно бывает :-)
Надеюсь на его пояснения по следующим фактам.

Трейс показывает, что в ИБЭ:
1. С момента аттача к БД до восстановления окон "предыдущего рабочего окружения" последовательно открывается и закрывается 17 транзакций; это всё понятно и хорошо;
2. После выполнения вот такой пары команд в Script Executive:
Код: plaintext
1.
create table ttt(id int);
commit;
- происходит:
2.1 открытие и немедленное закрытие (без единого оператора) транзакции TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE (см аттач);
2.2. открытие загадочной TRA_23, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой ничего не происходит и которая остается активной до дисконнекта или следующего commit'a;
2.3 открытие TRA_24, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой делается один селект из RDB$RELATIONS, после чего она коммитится;
2.4 открытие TRA_25, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой опять делается один селект из RDB$RELATIONS и транзакция коммитится.

Обращаю внимание: транзакция TRA_23 остаётся всё это время активной в режиме READ_ WRITE .
Выяснилось далее, что:
а) если выполнить дисконнект от базы (а также реконнект), то эта транзакция будет отменена rollback'ом, хотя в ней ничего не менялось и не селектилось:
Код: plaintext
1.
2.
3.
4.
5.
2011-06-27T23:45:04.6090 (428:020DE01C) ROLLBACK_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_23, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 1 read(s), 1 write(s), 1 fetch(es), 1 mark(s)
б) если в том же окне ScriptExecutive сделать второй DDL:
Код: plaintext
1.
drop table;
commit;
- то в этой TRA_23 будет выполнено нечто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Statement  101 :
-------------------------------------------------------------------------------
select cast( 1  as integer), cast(d.rdb$character_set_name as varchar( 64 )), cast(c.rdb$default_collate_name as varchar( 64 ))
from rdb$database d
left join rdb$character_sets c ON (d.rdb$character_set_name = c.rdb$character_set_name)
union
select cast( 2  as integer),  cast(rdb$field_name as varcha...
 11  records fetched
       1  ms,  64  fetch(es),  2  mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$DATABASE                             1                                                             1           
RDB$FIELDS                                         1                                                             
RDB$RELATION_FIELDS                                7                                                             
RDB$RELATIONS                                      1                                                             
RDB$CHARACTER_SETS                                 2                                                             
- и затем она закроется COMMIT'ом.

Но затем опять повторяется странность: открывается ОДНА транзакция на DDL, в ней грохается таблица, транзакция коммитится, а дальше, после COMMIT'a, снова открываются ДВЕ транзакции - TRA_28, которая тут же закрывается, ничего не выполнив, а за ней - новая "загадка" - TRA_29, которая ничего не делает.

И всё бы ничего, да ведь все эти транзакции (TRA_23, TRA_29) висят в режиме READ_COMMITTED | REC_VERSION | NOWAIT | READ_ WRITE . И значит, перед отъездом домой закрывать надо не только результаты запросов в SQL Editor'e, но и выполненные с commit'ом скрипты в SE!

ВОПРОС_1. Открытие транзакций-"висяков" после commit'a в Script Executive - это бага или давно известная фича ?

ВОПРОС-2. Зачем на старте делать такое кол-во (17) мелких RW-транзакций, которые обращаются к rdb$-таблицам и ничего не меняют в базе ? почему нельзя это делать в RO-транзакциях ?
...
Рейтинг: 0 / 0
28.06.2011, 03:33
    #37326683
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
1. Возможно, баг.
2. Проблема в чем?
...
Рейтинг: 0 / 0
28.06.2011, 08:52
    #37326732
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
IBExpert2. Проблема в чем?До тех пор, пока они короткие, проблемы нет. Но лучше бы они работали в RO-режиме, раз уж ничего не меняют... ;-)
Кроме того, непонятно:
1) для чего два раза делать каунт из RDB$RELATIONS с одним и тем же предикатом:
Код: 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.
39.
40.
41.
42.
43.
44.
45.
 2011 - 06 -27T23: 56 : 49 . 4530  ( 428 :020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)

 2011 - 06 -27T23: 56 : 49 . 4530  ( 428 :020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)

Statement  53 :
-------------------------------------------------------------------------------
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'IBE$VERSION_HISTORY'

 1  records fetched
       0  ms,  2  fetch(es)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)
      39  ms,  1  read(s),  1  write(s),  1  fetch(es),  1  mark(s)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Statement  54 :
-------------------------------------------------------------------------------
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'IBE$VERSION_HISTORY'

 1  records fetched
       0  ms,  2  fetch(es)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)
       0  ms,  1  read(s),  1  write(s),  1  fetch(es),  1  mark(s)
2) для чего открывать и тут же закрывать транзакцию после той, в которой выполнится DDL, вот фрагмент:
Код: 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.
2011-06-27T23:56:49.5000 (428:020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2011-06-27T23:56:49.5150 (428:020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

-------------------------------------------------------------------------------
 create table ttt(id int) 
0 records fetched
      0 ms

2011-06-27T23:56:49.5150 (428:020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      6 ms, 6 read(s), 23 write(s), 234 fetch(es), 21 mark(s)

2011-06-27T23:56:49.5150 (428:020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2011-06-27T23:56:49.5150 (428:020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 1 read(s), 1 write(s), 1 fetch(es), 1 mark(s)
...
Рейтинг: 0 / 0
28.06.2011, 09:37
    #37326780
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
ТаблоидКроме того, непонятно:


Особенности реализации.
...
Рейтинг: 0 / 0
28.06.2011, 12:04
    #37327017
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
IBExpert,

Теперь Таблоид и тебя сосчитал!
...
Рейтинг: 0 / 0
28.06.2011, 14:44
    #37327321
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
WildSeryIBExpert,

Теперь Таблоид и тебя сосчитал! я всего лишь проверил информацию, поступившую из одного надёжного источника...
Ну и сам, ес-сно, натыкался на это, причем много раз. Поэтому захотелось детальнее посмотреть, что там да как.

2 IBExpert :
если бага (с транзакциями-"висяками", см пункт 1 в стартовом посте) будет исправлена, то где об этом посмотреть ? Тута или еще где-то ?
...
Рейтинг: 0 / 0
28.06.2011, 18:40
    #37327775
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
Таблоид 2 IBExpert :
если бага (с транзакциями-"висяками", см пункт 1 в стартовом посте) будет исправлена, то где об этом посмотреть ? Тута или еще где-то ?

Уже исправил.
...
Рейтинг: 0 / 0
28.06.2011, 21:37
    #37327921
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
IBExpertУже исправил.А откуда скачивать ? вот тута лежит пока версия от 2 6 июня 2011.
dir:
Код: plaintext
26.06.2011    13:13     16351232 IBExpert.exe
...
Рейтинг: 0 / 0
28.06.2011, 21:45
    #37327926
olegenty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
ну раз уже качнул - трассирни, и будет понятно...
...
Рейтинг: 0 / 0
28.06.2011, 23:44
    #37328005
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
olegentyну раз уже качнул - трассирни, и будет понятно...дык! разумеется, протрассировал снова - я ж на дату не сразу внимание обратил. Но лог остался тем же самым, снова TRA_23 запускается после commit'a и не закрывается. После уже понял причину: ibe_sfx.exe датирован позавчерашним днём, а об ошибке я сообщил вчера :-)
...
Рейтинг: 0 / 0
29.06.2011, 03:05
    #37328077
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
Исправил != выложил
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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