"Застревание" транзакции.

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
v6y
Сообщения: 78
Зарегистрирован: 12 мар 2005, 17:45

"Застревание" транзакции.

Сообщение v6y » 28 июн 2006, 10:16

Не знаю как четко сформулировать вопрос, поэтому попробую объяснить на "пальцах".

Запускаю gstat -h, получаю статистику
Database header page information:
...
Oldest transaction 246
Oldest active 247
Oldest snapshot 247
Next transaction 248
...
*END*

Далее, запускаю программу, в которой выполняю:

Код: Выделить всё

isc_attach_database
isc_start_transaction
isc_execute(...,"select * from table",...)
isc_commit_transaction
isc_detach_database
После чего вновь выполняю gstat -h и получаю
Database header page information:
...
Oldest transaction 246
Oldest active 247
Oldest snapshot 247
Next transaction 249
...
*END*
При последующих запусках программы, Next transaction увеличивается, в то время как остальные величины остаются неизменными:
Database header page information:
...
Oldest transaction 246
Oldest active 247
Oldest snapshot 247
Next transaction 250
...
*END*
Опять запускаю, пргорамму, но теперь в ней выполняю:

Код: Выделить всё

isc_attach_database
isc_start_transaction
isc_execute(...,"select * from table",...)
isc_commit_transaction
//"холостая" транзакция
isc_start_transaction 
isc_commit_transaction
isc_detach_database
Теперь статистика выглядит так:
Database header page information:
...
Oldest transaction 251
Oldest active 252
Oldest snapshot 252
Next transaction 253
...
*END*
То есть, чтобы Oldest active не "застревал", необходимо в рамках одного соединения стартануть и завершить мимнмум две тразакции.
Кто-нибудь (если вдруг понял о чем это я :)) может это прокоменитровать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 июн 2006, 10:46

сервер какой? Если это InterBase, особенно 7.5, то он кэширует информацию о маркерах транзакций, и ее тогда надо смотреть в tmp$database. в FB такого наблюдаться не должно.

v6y
Сообщения: 78
Зарегистрирован: 12 мар 2005, 17:45

Сообщение v6y » 28 июн 2006, 11:14

kdv писал(а):сервер какой?
>=LI-V1.5.2.4731 Firebird 1.5

Ответить