Michael Crozier crozierm
Mon Sep 5 23:08:46 PDT 2005
> ((A and X) or (B ?and X)) ==> ((A or B) and X)
>
> (A = log_tableid in ([set1])) and (B = log_tableid in ([set2]))
> ? ?==> (A or B) = log_tableid in ([set1] + [set2])
>
> what more proof do you need ?

After looking at the code (though I am not very familar with slony internals 
yet), it seems that the <xid filter> parts are calculated per-set, so it 
would have collapsed IF the xid parts were the same or it would require proof 
that the xid filter parts will always be the same.

> I guess that in my case the improvement was more like 95%.

I also saw a significant increase.  The difference between my "fast" machine 
and "slow" machine seemed to indicate that the difference was primarily CPU 
related.

I will also note that during the "catch up" period after a long copy, the 
event group size heuristic was not working very well, even when adjusting the 
desired sync time to various values.  The size of the group was affecting the 
event processing time very little, so the group size would gradually reach 
100, then drop back down to 1.  I eventually modified remote_worker.c to keep 
the group size at 100, which decreased the catch up time by approximately 90% 
and kept the sync length below the 100000 (artificial?) limitation.

I'm not familiar enough with the algorithm to suggest an improvement, but I 
can say that the immediate "back off down to 1" was the performance killer.


-- 

Conducive Technology Corporation
 Taking air cargo information 
   to the next level

     http://www.conducivetech.com
      http://www.pathfinder-web.com

        Michael Crozier crozierm at conducivetech.com

          Voice: 503.445.4233
            Fax:   503.274.0939



More information about the Slony1-general mailing list