When populating a large database (10s of GBs) performance drops suddenly at a certain time whenever I run the populating application. Is there typically a database size when indexes can no longer be held fully in memory or some such issue? The method calls that suddenly start to take the most time are those that retrieve data from the store.
Performance with large databases
This may be explained by examining the ratio between the database size and the available RAM.
As long as the available RAM is larger than the database, the entire database can reside in memory (using the OS cache, regardless of the JVM heap size and the ObjectDB cache size).
Except this, ObjectDB performance should not be affected significantly by a larger database.
Is fetching an object by the id faster than fetching by an indexed field, or should these be about the same speed?
Retrieval by ID is expected to be faster, because it enables direct access.
Retrieval by an indexed field is usually composed of two steps: First finding the ID and then retrieval by ID.