Denis,

On 06/21/2014 08:10 AM, Simonov Denis wrote:
> A long-running transaction READ READ_COMMITED will not keep the garbage?
> Maybe we should introduce a new key TPB, if you want to maintain
> compatibility.

Yes, for READ_ONLY + READ COMMITTED transactions you will now inhibit GC if you 
keep a cursor open 
for a long time.

I believe that engine shall strive to do "the right thing" and pay the cost if 
necessary.

Otherwise you won't really know what data will be returned to you, and it will 
change based on the 
query plan chosen by the optimizer this time (if SORT was used, etc). This can 
be confusing and 
damaging, if somebody depends on this data.

And if you want compatibility - please use compatibility configuration setting 
until you fix your 
application to accommodate for changed behavior.

I refer this to Dmitry, but I think that we shall correct MON$TRANSACTIONS to 
return GC watermark in 
MON$OLDEST_ACTIVE rather than oldest snapshot number.
Otherwise it mismatches INF interface where GC watermark is returned in 
isc_info_tra_oldest_active, 
and isc_info_tra_oldest_snapshot returns oldest snapshot number.

Oldest snapshot number is the implementation detail of GC algorithm and is 
mostly useless for users. 
But GC watermark is really interesting, if you want to find out which 
transaction inhibits your GC. 
Currently, to monitor this counter you need to use fb_lock_print, and this is 
not convenient at all.

Nikolay Samofatov


------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to