You are experiencing speed or scalability problems with db4o? In this section gives an overview of the common issues.
db4o is built for embedded use cases with small databases. It isn't optimized for database larger than a few gigabytes. See "Increasing the Maximum Database File Size"
db4o is explicitly single-threaded. Concurrent accesses will be synchronized against a global database lock.That means db4o cannot deal with a highly concurrent access, since it blocks on all operations. When you expect a high load and concurrent access, then you should consider a larger database like the Versant object database.
One of the most common performance issues is that too many objects are activated. You should try to keep activation to a minimum. You can monitor activation of your objects either by installing a event handler or by using the monitoring capabilities.
Check your configuration for the global activation depth and cascading activations. These settings are often responsible for activating too many objects. In general consider transparent activation to avoid activating unnecessary objects.
If you have trouble with query performance take a look here.
If your performance degrades over time you might need to defragement your database. See "Defragment"
By default db4o databases can only grow up to two Gigabytes. For increasing that size take a look here. Also take a look what contributes to the database file size.
A big performance point is how db4o stores the data to disk. By default db4o uses a relatively small file cache. A bigger cache might improve the performance. In general choosing the right storage can increase performance significantly.
In client server mode a major performance bottleneck are network roundtrip's. You can reduce these by prefetching objects. Try to tune the prefetch options on the client settings.
Another parameter which can influences performance quite bit is the size of the B-tree nodes. You can tune this parameter in the common-configuration.