Fixing the database should be a priority.
Thoughts: Most data access follows the 80:20 rule. 80% of the requests use 20% of the data. And in that 20% the same applies. 80% of its accesses use only 20% of it's data.
So caching can help. But now you have cache coherency issues. Does user A have a different cache from user B? Sometimes you don't care. If a database is read only, then separate caches are ok.
You also need to know what the correlation is between users. If both User A and User B want fiscal report 2019, quarter 3 data then even for read access you want a single cache. So caching may be best at the department or division level, not the worker level.
Write operations are a different kettle of fish. There is a lot of arcane magic in database programming and in the design of the database itself to handle multiple people wanting to write the same data. Doing this in your front end is the same order of difficulty as writing a database from scratch, especially as you don't know the mechanisms in the black box.
If not having perfectly up to date reports is tolerable, then you can write transactions to a log file, then have a separate process commit them to the database. But now you have the issue of what happens when both UserA and UserB have pulled a copy of record 1234 and have modified one field in it. Same field? Different field? The actual database is usually designed with some form of record locking:
UserA grabs record 1234. UserB also grabs it. UserB wants to make a modification. Database locks record. UserA's client is notified that record 1234 is locked. B's modifcation is written to the database. A is given the updated record. If A tried to modify the record while B had it locked, A would receive a 'locked' error.
Not too bad when users are squabbling over an individual record. What happens when User B is doing a bulk update. Imagine a photo database, and User B wants to change the spelling of a keyword, or apply a copyright notice to 5 million image records.
You then have to consider relative speed. At one point in the Bad Old Days we had a box with some 256 MByte of ram in it. Our desk top machines had 4 MByte. It worked out that the network was faster than disk, so for small data access (Under 4K) it was faster to set set up the big box as a memory server.