Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 1 of 1 total
Thread DBISAM multi-user speed considerations
Mon, May 26 2008 2:51 AMPermanent Link

Kerry Neighbour
Tim, we were discussing speed issues in DBISAM over in the ElevateDB
newsgroup. I thought I would move over to this group and create a new
thread.

I have no real, concrete problem at the moment, which is perhaps why you
find my comments a bit confusing. But here are the details.

I have a DBISAM 4/Delphi 7 product that stores files and boxes. It was
written to replace an existing application that was written in MS Access
97. We still use this MS Access 97 application. The reason we wrote the
Delphi app is that we can distribute it to others, whereas the MSAccess
app we cannot. So the first thing the Delphi app has to do is match the
MS Access app for speed. Since we still use this app every day, this is
easy to do.

I have some trouble in matching the speed of MS Access, which is one of
the reasons for this thread. Please note that I have not done exact
benchmarks in each system - it is more a 'user-feeling' thing.

- The Problem -
Most of our customers (as in our in-house system) runs with tables of
around 100,000 items with 2 or 3 online users at any one time max. It is
usually one 1 user. In fact, this is where my problem comes in - when we
have 2 or more users, speed drops right off. I have raised this problem
before - it is nothing new. It has been explained as a Windows locking
issue, and I accept that. The thing is, I still have to fix it, or find
some way around it.

To be more specific, my Delphi app is installed on each local
workstation. Each user "points to" a directory on a Windows 2003 server
that contains the DBISAM database files. So most users use a "local"
DBISAM database connection. This is where I am having a problem with speed.

I also have a DBISAM server (the exact one that is included with DBISAM)
that I can also run on the Windows 2003 server, pointing to the same
DBISAM database folder mentioned above. Users can then choose to connect
via a 'local' connection, or this C/S connection.

We see very little difference in speed using either method.

- What to do? -
I am starting to think about the speed issue again, and it struck me
that since the multi-user locking problem seems file based, perhaps a
single file database system might be the answer to my problem? I asked
this in another thread, and I am now satisfied that this is NOT a solution.

My next thought was to beef up the C/S server. At the moment I just use
the one provided by ElevateSoft. I implement no server based procedures,
nor do I use transactions, etc. This seems a valid way to go, and I
would appreciate any general comments you have in this area.

BTW - every table has been designed to third normal form. All queries
are optimized using the DBSys program. Indexes are used for every search
field. I do not think I can do much in the database design area. But
certainly if anyone has any suggestions in this area, I would love to
see them.

In any case, with one user on the system, speed is quite acceptable. It
is only when we add one more user that we get problems.


Any thoughts?
Image