I'm hoping someone can point me in the right direction with this one.
One of our developers has written an application that uses a Topspeed flat file database (.tps).
When one client machine access the application, the speed is quiet good. However when a second client machine accesses the application at the same time, it can take over 8 seconds to load a form (first user only has to wait 1-2 seconds). If the first user exits, the 2nd users application speeds up.
We have been playing with Oplocks, but disabling the oplocks will slow down the entire system. Meaning that even with only one user logged in, there are 8 second delays. Re-enabling oplocks sees the speed back to normal for the first user only.
I've read that disabling oplocks can cause a performance issues, would this be the case in this instance? Would having oplocks enabled be the cause of the slow down for the 2nd (and more) user?
I have done lots of packet sniffing with ethereal / wire shark. With just one user in the application and they open a form, there might be about 6000 packets. When the second user opens the same form there can be about 20000 packets. Most of these packets relate to AndX read, AndX request, Locking AndX request, Locking AndX Response.
I'm not familiar with Clarion's Topspeed database, but, as it's a file-based database, I can't say that I'm surprised...
A file based database, which uses the file system for database locking and handling contention issues, is going to be slower for users 2-N. It's just the nature of the beast.
A server-based approach is much more efficient in handling multiple user data access.
"Lisa, in this house, we obey the laws of thermodynamics!" - Homer Simpson
"I have my standards. They may be low, but I have them!" - Bette Middler
"It's a book about a Spanish guy named Manual. You should read it." - Dilbert