Access performance issues when more than one users log in simultaneously. (2 Viewers)

atrkmn

New member
Local time
Today, 17:44
Joined
Dec 23, 2024
Messages
7
Firstly, I would like to extend my warmest wishes to everbody on this forum for a joyous and restful Christmas season, filled with happiness and good health.

We are currently developing a database system using Microsoft Access. While the system works seamlessly for the most part, we encounter significant performance issues when more than two users log in simultaneously. The database's speed decreases to the point where it becomes nearly unusable. Despite trying various solutions suggested online, we have not been able to resolve the problem.
  • Database is splitted. Each user has own FE copy on their local computer, BE is located on a network share folder.
  • Forms tables etc. optimized as much as possible. Single user usage is pretty fast (either ethernet or vpn).
  • We have implemented Persistent Conncetion (both trying with hidden table and VBA methods).
  • Name autocorrect has been turned off.
  • Both FE and BE compacted.

We were hoping someone here might be able to provide support or guide us towards a solution.
 
Is the network share subject to anti-virus scans?
What is the connection speed like to the Network?
Is the network share a trusted location?

Oh and welcome to AWF!
 
What version of Access do you have installed and what build?
 
The default behavior of queries and forms is Optimistic Locking, so this should only be a "verification" step. Check each query and form to assure that nothing is set for Pessimistic Locking.

Also, in the "Similar Threads" list at the bottom of the page, you might find a few articles of interest.

Your symptom also reminds me of something that happened to me when I had a 40+ user DB. Do your forms use queries rather than direct table references in their .RecordSource properties? Ditto for .RowSource for combo and listbox controls? Because for some reason, queries are faster than direct tables, perhaps because stored queries already have an execution plan.

Then, there is the issue of whether you have a timer running in the FE that potentially touches something in the BE. It is not that you have a timer but what that timer would do to some table that exposes potential slowdowns.

Fast performance in single use but slow performance in shared use also begs the question of what kind of startup form you have (if any). But does this slowdown occur immediately and persist? OR does it start as a mild effect that increases in effect the longer you are logged in? Or some other profile of onset and maintenance?
 
Is the network share subject to anti-virus scans?
What is the connection speed like to the Network?
Is the network share a trusted location?

Oh and welcome to AWF!
Thank you Minty!

Network share folder is on company's cloud sytem. Connection speed is really high with only one user.
 
Thank you Minty!

Network share folder is on company's cloud sytem. Connection speed is really high with only one user.

If it's cloud based I'm surprised it works at all to be honest.
Access relies on the SMB protocol for file access/sharing, and this isn't normally supported in the cloud environment.

If it's a cloud synced local folder then that again is going to be a problem. The cloud synchronisation is likely to really slow down the workings or cause corruption.
 
The default behavior of queries and forms is Optimistic Locking, so this should only be a "verification" step. Check each query and form to assure that nothing is set for Pessimistic Locking.

Also, in the "Similar Threads" list at the bottom of the page, you might find a few articles of interest.

Your symptom also reminds me of something that happened to me when I had a 40+ user DB. Do your forms use queries rather than direct table references in their .RecordSource properties? Ditto for .RowSource for combo and listbox controls? Because for some reason, queries are faster than direct tables, perhaps because stored queries already have an execution plan.

Then, there is the issue of whether you have a timer running in the FE that potentially touches something in the BE. It is not that you have a timer but what that timer would do to some table that exposes potential slowdowns.

Fast performance in single use but slow performance in shared use also begs the question of what kind of startup form you have (if any). But does this slowdown occur immediately and persist? OR does it start as a mild effect that increases in effect the longer you are logged in? Or some other profile of onset and maintenance?
Hi The_Doc_Man, thank you for the insights. Forms mainly use direct table references in their .RecordSource properties. I will change them to queries and try like that.

Slowdown occur immediately when second person runs the database.
 
If it's cloud based I'm surprised it works at all to be honest.
Access relies on the SMB protocol for file access/sharing, and this isn't normally supported in the cloud environment.

If it's a cloud synced local folder then that again is going to be a problem. The cloud synchronisation is likely to really slow down the workings or cause corruption.
Maybe I used wrong teminology there, sorry for inconvenience. Normally database stuff is not my proffession.
 
Maybe I used wrong teminology there, sorry for inconvenience. Normally database stuff is not my proffession.
Not a problem.

This will sound a bit odd, but can you screenshot the backend folder in explorer, it might give us some clues as to where and how it is stored.
You can obscure anything that might give away any propriety data, but leave enough for us to see the file icons and as much of the path as is practical to let us see.

How and where it's stored is fundamental to trying to understand what the problem might be.
 
There is a distinction between "cloud" storage and "network attached" storage. Since you claim relative unfamiliarity with "DB stuff" we can understand that you might not know what you have.

If you have "network attached storage" (NAS) then Access doesn't really care - because Windows manages that for you with near transparency. NAS works just fine and the only real issue is how file locking is managed. NAS supports any and all protocols because the NAS drive host acts like a smart controller most of the time.

If you TRULY have "cloud" storage, that is a totally different problem that can lead to serious, even damaging conditions. Cloud storage acts more like a "smart" backup system that runs automatically behind the scenes. BUT its protocol is generally a whole-file protocol whereas Access uses the Windows File & Printer Sharing protocol called Server Message Block (SMB) that is capable of working on chunks of the file. The problem is that cloud protocol typically wants to transfer the whole file when any part of it changes. If two users are in the same part of the cloud at the same time, you run into the "Left hand doesn't know what the right hand is doing" syndrome (more correctly called "destructive interference.")

It is important to know which one you have because if it is NAS then this might a file locking issue but if it is "cloud with auto-backup" then you have a much bigger problem with file corruption potential.
 
There is a distinction between "cloud" storage and "network attached" storage. Since you claim relative unfamiliarity with "DB stuff" we can understand that you might not know what you have.

If you have "network attached storage" (NAS) then Access doesn't really care - because Windows manages that for you with near transparency. NAS works just fine and the only real issue is how file locking is managed. NAS supports any and all protocols because the NAS drive host acts like a smart controller most of the time.

If you TRULY have "cloud" storage, that is a totally different problem that can lead to serious, even damaging conditions. Cloud storage acts more like a "smart" backup system that runs automatically behind the scenes. BUT its protocol is generally a whole-file protocol whereas Access uses the Windows File & Printer Sharing protocol called Server Message Block (SMB) that is capable of working on chunks of the file. The problem is that cloud protocol typically wants to transfer the whole file when any part of it changes. If two users are in the same part of the cloud at the same time, you run into the "Left hand doesn't know what the right hand is doing" syndrome (more correctly called "destructive interference.")

It is important to know which one you have because if it is NAS then this might a file locking issue but if it is "cloud with auto-backup" then you have a much bigger problem with file corruption potential.
In this case, I believe I have a NAS system. On the windows file browser, where you write directory, it says network > [company domain] > [folder name]. I can go to the folder by writing \\companydomain\foldername there, but only with vpn if I am working away.
 
That could just be another PC? :(
However it does determine that it is not the 'cloud' I would have thought?
 
I can go to the folder by writing \\companydomain\foldername there, but only with vpn if I am working away.

That sounds like a reasonably tight security setup in that it doesn't seem excessive but it WILL protect from anyone who doesn't know the way past the outer boundary firewall. However, your are talking about this happening even through your company's in-house network, and THAT is not likely to be based on a VPN. So it doesn't point in any particular direction.

On the windows file browser, where you write directory, it says network > [company domain] > [folder name]

That isn't how you tell about cloud sync, unfortunately. You have to look at this article and then visit the named folder to see if any of the synchronization icons are showing for the files in question.


There are a few kinds of slowdowns that would apply to the "multiple users in the same app file" case.

1. Slow initial connection but then the operational speed would be OK.

2. Slow connection when the multiple users are doing the same thing (i.e. data entry to the same table).

3. Continuously slow operation no matter what you are doing, even when two users are looking at two different parts of the DB.

To start, you have to verify that the folder AND all files therein have proper file permissions, which must be MODIFY when using Access. Note that "MODIFY" permission is actually a category of permissions because MODIFY is like a "macro" permission... it carries over a dozen low-level permissions out of the 22 "real" file permissions. Then, all folders above your target (i.e. from the root folder of the drive to the folder where you keep the files) must have PASSTHRU permission - which lets you skip from parent folder to child folder without touching anything else in the parent folder EXCEPT the child folder.

IF your IT folks get a little crazed over all those permissions, tell them that Access will work just fine with group identifiers. (If they don't care, skip this next part.)
1. Create a "project" group identifier with a simple but relevant name.
2. Grant PASSTHRU or MODIFY permissions (as appropriate) for the group identifier in each folder and on all the files IN that folder. However, note that it is not uncommon for PASSTHRU to be assigned on ALL folders for the group "AuthenticatedUsers" - in which case you don't need to ADD the PASSTHRU permission.
3. Set the folder to let its files inherit the group permissions from the folder
4. Grant your users membership in that group.

It APPEARS that you have a short path from the host drive to the working folder, but that could be a matter of having a more complex mount point hiding the actual path. Identifying a mount point probably isn't necessary as long as permissions are OK leading to your working folder.

The problem with having a persistent connection is that if you don't, then every time you "touch" the back-end DB, you have to go through a process called "access arbitration" (little "A" on "access" in this case, meaning "file access.") If you have a persistent file connection open to the DB, then you can "ride" the connection from FE to BE without going through arbitration for each touch of the BE. A test, if you can bear to try such a thing is to open the DB and time something. Then have someone else open the DB while the first connection is still open. Do that same something, timing it - both people at once AND again, this time sequentially. Now the ugly part (as if the two-way wasn't already ugly)... Have a third person log in and do the timing tests to see how much worse it gets.

The problem is that file access arbitration over a network uses something called Distributed Lock Management, which is a scheme in which the host of a file manages that file for all users, local AND remote. When one person has a file open, it is not usually a big issue. When two or more people have a file open, they have to consult with all other locks on that file, involving extra work as they check whether any of the locks is Exclusive and/or restricts how the file can be used when someone else is using it. HINT for comparison: Share an EXCEL file. Only the first person to open it can update it. Subsequent users have it READ-ONLY while the first person is still in there.

If you have a lot of VBA code doing recordset operations, that can be an issue since in that case, record access is piecemeal, whereas if you use a lot of SQL, that is usually done wholesale and involves fewer locks. If the app that suffers a slowdown is heavily VBA based, the increased lock overhead is a good candidate for your culprit.

This random rumination might help, might confuse. But it was meant to give you some ideas of where to look.
 
The_Doc_Man, thank your detailed and helpful rumination! :)

That isn't how you tell about cloud sync, unfortunately. You have to look at this article and then visit the named folder to see if any of the synchronization icons are showing for the files in question.
From this, I can say that the BE folder is NOT on a cloud based system because there are no sync icons shown for the BE files. However, although FE is stored on my local (desktop), the sync icon is shown. Could it be the problem ?


There are a few kinds of slowdowns that would apply to the "multiple users in the same app file" case.
And about these cases I am having the case number 3. Even someone is on the main switchboard form, DB is very slow for everybody no matter what they are doing.

To start, you have to verify that the folder AND all files therein have proper file permissions, which must be MODIFY when using Access. Note that "MODIFY" permission is actually a category of permissions because MODIFY is like a "macro" permission...
I checked the network share folder and users have Modify, Read & execute, List folder contents, Read, Write permissions.

If you have a lot of VBA code doing recordset operations, that can be an issue since in that case, record access is piecemeal, whereas if you use a lot of SQL, that is usually done wholesale and involves fewer locks. If the app that suffers a slowdown is heavily VBA based, the increased lock overhead is a good candidate for your culprit.
I have a lot of VBA codes icluding recordset operations, but the database slowsdowns before executing them. But I will search for a way to get rid of them.


The database also contains attachment fields but the total size of the attachments are very low, whole DB is 40mb. Could those attachment fields also be a reason for the slowdown ?
 
From this, I can say that the BE folder is NOT on a cloud based system because there are no sync icons shown for the BE files. However, although FE is stored on my local (desktop), the sync icon is shown. Could it be the problem ?

I would say this will almost certainly cause issues, as it will be trying to sync the local access file to the cloud.
Move the FE to a dedicated C:\ folder that isn't covered with the company policy of helpfully keeping everything copied to the cloud.

I know I have had to do this in a couple of corporate systems to avoid problems.
 
The database also contains attachment fields but the total size of the attachments are very low, whole DB is 40mb. Could those attachment fields also be a reason for the slowdown ?

Hard to say, but unlikely unless you try to actually process the contents of the attachments piecemeal rather than just attach them wholesale.

However, although FE is stored on my local (desktop), the sync icon is shown. Could it be the problem ?

As long as the FE is unique to each user (i.e. private copy), you should be mostly OK. The problem stemming from Cloud sharing methods is one of probabilities, not certainties. Cloud-sharing a back-end file raises the probabilities considerably. Cloud-sharing the .LACCDB for the back-end file raises the probabilities astronomically.

Having the private copies of the front-end file eliminates contention from others using the front-end file. I.e. each set of file locks for the front-end file(s) appears privately AND LOCALLY on each user's machine. There can be no lock contention for the FE file because in each case there is only one user trying to use that file. AND in that case, the file - being local - is locally managed, because that is the way Distributed Lock Management works.

I checked the network share folder and users have Modify, Read & execute, List folder contents, Read, Write permissions.

As long as it says MODIFY on the folder and its files, you should be OK on that front.

At the moment, nothing else occurs to me but then again, sometimes this kind of problem is not immediately obvious. You have my attention but also the attention of some others who have slow-down experience as well. Just waiting right now for that "aha" moment.
 
Youcine access performance may degrade with multiple simultaneous logins due to server load or bandwidth limitations. Optimizing server capacity and connection handling can help improve performance.
 
@atrkmn - jaclin48's comment is appropriate. Do you know the bandwidth of your in-house network?

If your users are each doing different things that interact with the shared drive that holds the backend file, but they are NOT actually running Access, do you see slowdowns? (I'm trying to isolate the problem to see if it is Access itself or the file lock subsystem or network contention.)
 

Users who are viewing this thread

Back
Top Bottom