views:

769

answers:

3

Hi! I have a website (www.soltrago.com) wghere I use a .mdb microsoft access database to retrieve data when the pages loads. I use a dns less connection to connect to the database. My question is how many simultaneous connections can I have to my webpage? Like how many people per second can view my webpage? Thanks!

A: 

Your web app probably has just one connection to the MS Access file. The number of web pages that can be served is different.

Your title and question do not match.

MS Access is not an database engine in the server sense. You do not prepare a query, submit to an engine, get a result (say per web page). This scales well because it's all stateless.

In this case, it's basically a structured file (.mdb) recognised by Jet (used by msaccess.exe) so your web app has the file open when it starts.

gbn
Unless he's doing only reads, I seriously hope he doesn't just have one global connection open, otherwise everything related to transactions will have serious problems.
Lasse V. Karlsen
I assume one connection globally because the file would be locked for use. I doubt you'd open/close the .mdb like you'd open/close a database connection queries to an engine.
gbn
Well, the application opens the file as it would any other database engine, and Jet files (.MDB) does support simultaneous access, with read/write semantics, transaction support, etc. So it's closer to a "real" database than just a normal file.
Lasse V. Karlsen
+5  A: 

I wonder why you don't just use SQL Server Express Edition instead - a far more scaleable engine, but still free.

(edit)

As an added bonus; when your site "takes off" and you need more grunt (bigger, more CPUs, more memory, more failover, clustering, etc), you just buy a bigger box and a SQL Server license and you're set to go; you don't have that luxury with mdb.

Marc Gravell
I just converted my 102Mb access DB that was behind a forum with 3000 visits a day... it was easy to import, and now the forum is fastest as ever! I was just postponing the task, now I say: I should did this sooner! :)
balexandre
+5  A: 

There is no single answer to this question.

For instance, I could say... 25, and it could be true, in the sense that in some cases, you can run 25 simultaneous users against the database.

Or I could say 150, and it could be true.

The problem is, I could also say 75, and it would not be true, basically because the way you're using the database has serious performance problems.

Or I could say 2, and it wouldn't be true either, because every connection you make locks the same data, and thus you end up serializing every access because every other user has to wait for the first one to complete his transaction and thus unlock the data.

How many users is a function of the upper limit of the database engine, and the way you're using the database. The page I linked to in my comment says the upper limit is 255. I can't vouch for that, but it sounds plausible, simply because access isn't meant to be a multi-user database. Sure, it handles it, but it's not meant to serve thousands of users.

Your best bet is actually to get some kind of load tester application and see when your application either starts having serious performance problems, or perhaps even just crashes.

Other than that, nobody can tell you the right answer.

Lasse V. Karlsen