Supongo que lo más importante es el tema de transacciones.
Si abres una transacción y haces CommitRetaining de esta cada vez que quieres grabar, esto será como no cerrar la transacción nunca y se acumularán una sobre otra, hasta que se cierre la aplicación (o se haga el Commit final)
Lo que quiero decir es que deberás tratar de abrir y cerrar las transacciones siempre que puedas y usar el CommitRetaining lo menos posibe.
Como lema: La vida de la transacción debe ser lo más corta posible para que la base de datos o se degrade.
En mis aplicaciones yo conecto una sola vez al principio de la aplicación y hago una transacción por form. Esta transacción se abre y se cierra (Commit) con el form. Además, se van haciendo CommiRetaining para grabar los datos mientras el usuario entra o borra datos.
En procesos masivos, trato de hacer un commit por cada iteración. Por ejemplo contabilizar todas las facturas abiertas sería
Código:
While Facturas abiertas
Transaction.StartTransaction
Cerrar
Transaction.Commit
end