"Застревание" транзакции.
Добавлено: 28 июн 2006, 10:16
Не знаю как четко сформулировать вопрос, поэтому попробую объяснить на "пальцах".
Запускаю gstat -h, получаю статистику
Далее, запускаю программу, в которой выполняю:
После чего вновь выполняю gstat -h и получаю
Теперь статистика выглядит так:
Кто-нибудь (если вдруг понял о чем это я
) может это прокоменитровать?
Запускаю 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
При последующих запусках программы, Next transaction увеличивается, в то время как остальные величины остаются неизменными:Database header page information:
...
Oldest transaction 246
Oldest active 247
Oldest snapshot 247
Next transaction 249
...
*END*
Опять запускаю, пргорамму, но теперь в ней выполняю: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
То есть, чтобы Oldest active не "застревал", необходимо в рамках одного соединения стартануть и завершить мимнмум две тразакции.Database header page information:
...
Oldest transaction 251
Oldest active 252
Oldest snapshot 252
Next transaction 253
...
*END*
Кто-нибудь (если вдруг понял о чем это я
