>   If a record has uncommitted head version created by active transaction and 
> some garbage 
> in backversions "tail", can anyone (background GC thread, sweep or parallel 
> transaction) 
> wipe this garbage from the tail while the transaction is still active?

    Yes

>   I can't understand why list_staying() is so picky: it scans for every next 
> version from 
> the beginning which raise its complexity to O(N^2).

    list_staying used to undo dead record version. It is not a most often 
operation. And, yes, 
it is terrible inefficient. It restarts from the beginning of the versions 
chain when need next 
record version because :
a) it used handoff's to make sure backpointers is valid
b) data page with target version is released 

Regards,
Vlad

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to