Hi Paul,
It's a matter of perspective... What happens is that when one user is in the application, the app is extraordinary fast. If the second user logs in, the speed revers to normal speed. This is called opportunistic locking and is enabled by default. You can disable it which means that even a single user would get normal speed (as opposed to increased performance).
What happens behind the scenes (as Walter pointed out for Novell) is that the client receives temporary exclusive access to the file. With exclusive access, the client can cache much more heavily than with shared access, since nobody could possibly interfere with the file. When the second user locks on the first user need to switch to shared more which obviously can't cache as much. For more technical details see
http://support.microsoft.com/kb/129202.
So, basically, the answer is no. You cannot get the same speed as the single user situation, because that's the special optimized case. What you need to do is to optimize your application for multi-user usage. This includes:
- optimizing queries to minimize traffic
- minimize cache invalidation by not changing tables too frequently and reducing the number of indexed fields
- minimize usage of exclusive locks (adding records, updating indexes, changing memo fields)
- cache data on the client side
- implement server side components that work on a job queue
- reduce the effect of latency by either minimizing the number of sequential network operations or executing them parallel.
--
Christof