Consultor Eletrônico



Kbase P86005: findRowWhere is very slow with Dynamics when the SDO reads a table with many records.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   25/06/2004
Status: Unverified

FACT(s) (Environment):

Dynamics 2.1A

SYMPTOM(s):

findRowWhere is very slow with Dynamics when the SDO reads a table with many records.

Code such as:

IF DYNAMIC-FUNCTION ("findRowWhere" IN h_SDO,
"AdresseNr",
cAdresseNr,
"=") THEN DO:
MESSAGE "Found".
END.

Is very slow with Dynamics even when the SDO "Rebuild Dataset on reposition" property is set. This is true even when running with Dynamics 2.1A02.

CAUSE:

The reason that the findRowWhere is slow is because of the client cache. Old versions of the objects are being run because they have been written to the client cache directory when a previous session ended.

FIX:

The auto_dump_entity_cache property is set to YES.

The auto_dump_entity_cache property is set to YES by default. This means that when the Dynamics session ends, various files for the entities used in the session will be dumped into the CLC directory (<Dynamics Install>/src/icf/ry/clc directory). In subsequent sessions, running a container will run the entities defined in these files and not defined in the Repository. This improves the speed of instantiation. But means it is possible to make changes to an object in the Appbuilder, but not actually see these changes because the object (an old copy) is being run from the CLC directory.

For Development the auto_dump_entity_cache parameter should be set to NO. This way the AppBuilder will always run the correct (up to date) versions of objects from the Repository.

So, set this parameter to NO in the Dynamics session properties. When Development is complete, these files can be generated manually and deployed to the clients.