Cached updates trouble
Posted: Thu 27 May 2010 12:53
Hi
Using ODAC 3.60.0.42 21-Mar-02, RAD STudio 2007
I have a TCLientDataset, filled with changes. I call TCLientDataset.ApplyUpdates, which fills the TOraTable with changes.
CachedUpdates=True, Options.UpdateBatchsize=1000
It also appears to have some effect, but still behaves unexpectedly.
I expected a lot of DML statements would be send with one network message, but it appears each insert/update/delete statement is sent separately. Due to network delays this causes a bottleneck for manipulating data from within my App.
Sample expected statement to be sent by ODAC
--begin of msg
-- end of msg
Actually sent by ODAC is
--begin of msg
-- end of msg
--begin of msg
-- end of msg
--begin of msg
-- end of msg
--begin of msg
-- end of msg
BTW The CLientDataset solution has nothing to do with this. Adding records in a loop (with cache updates enabled) to TOraTable and then calling ApplyUpdates will display the same behaviour.
(Tested with devart's DBMonitor tool)
Using ODAC 3.60.0.42 21-Mar-02, RAD STudio 2007
I have a TCLientDataset, filled with changes. I call TCLientDataset.ApplyUpdates, which fills the TOraTable with changes.
CachedUpdates=True, Options.UpdateBatchsize=1000
It also appears to have some effect, but still behaves unexpectedly.
I expected a lot of DML statements would be send with one network message, but it appears each insert/update/delete statement is sent separately. Due to network delays this causes a bottleneck for manipulating data from within my App.
Sample expected statement to be sent by ODAC
--begin of msg
Code: Select all
BEGIN
INSERT ... INTO ... VALUES...;
INSERT ... INTO ... VALUES...;
...
INSERT ... INTO ... VALUES...;
END;
Actually sent by ODAC is
--begin of msg
Code: Select all
INSERT ... INTO ... VALUES...;--begin of msg
Code: Select all
INSERT ... INTO ... VALUES...;--begin of msg
Code: Select all
...--begin of msg
Code: Select all
INSERT ... INTO ... VALUES...;BTW The CLientDataset solution has nothing to do with this. Adding records in a loop (with cache updates enabled) to TOraTable and then calling ApplyUpdates will display the same behaviour.
(Tested with devart's DBMonitor tool)