ER: target loses inserts
Posted in 2004
IFX V9.21.UC4 Solaris 7 2 multicpu machines connected via Gbit Ethernet exclusively used for ER only ER: update everywhere, tx based conflict resolution based on the timestamps 20 CPUvps, tons of disks, approx 700 tables in the replication. Database in log mode ANSI All tables in LOCK MODE ROW GLS is in place Here is a 'skeleton' of what we think has happened: <---------- SOURCE -----------> <----- TARGET --------> Time 1 Source does an INSERT Target does nothing INSERT does a join and is very slow due to missing index Time 2 COMMIT; Target does nothing Time 3 SendQ - - - spools the INSERT to - - - RECV Q Time 4 Source does an update Target starts to do to the former inserted the INSERT and this takes row. This is quick long (like 10 times longer than the UPDATE running on Source right now Time 5 COMMIT; Target still is doing INSERT Time 6 SendQ - - - - spools the update to - - - - RECV Q Time 7 Source is idle Target CPUvp#1 still doing the INSERT Target CPUvp#2 start to try the UPDATE. Rows is not here Therefore an Insert is done instead and a ris file gets written Time 8 Source is idle Target CPUcp#1 finishes join and tries to do the INSERT which is - of course - not possible because the row is already here My questions now: Can / does it happen like this? How to prevent that an UPDATE happens in the target earlier than the INSERT of the row the UPDATE belongs to Every help or comments appreciated dic_k -- Richard Kofler SOLID STATE EDV Dienstleistungen GmbH Vienna/Austria/Europe