Hi!
>>>>> "David" == David Phillips <david@stripped> writes:
>> Without giving away an "trade secrets", the plan is to run a lot of
>> separate MySQL server instances on a each machine (there will be
>> "many" MySQL server machines). Each user will get a MySQL server (in
>> the daemon sense, not the machine sense) all to themselves. Each
>> MySQL server will run with a different uid. This will give us the
>> ability to control the process using standard Unix process limits and
>> all that good stuff.
David> We thought about that, but isn't that quite resource intensive? Even with
David> only a few hundred users, I don't think a single box could handle it. But
David> the same box should be able to easily handle the same number if it was a
David> single server. You'd have to set each server to use very little RAM for
David> buffers, which would cause a lot more disk and CPU overhead. Even when they
David> are all sitting idle, they are taking up memory. Is the problem not as bad
David> as I think it would be?
As long as you don't set up a big key cache for all users, there isn't
that much memory higher overhead to run many MySQL servers than to run
one; It's actually better to run many MySQL servers / box as this will
ensure that one user can't accidently crash things for many other
users if he finds out some way to take down MySQL.
David> I think my idea for a modification makes more sense, since it better
David> utilizes resources. But if that's wrong, I'd really like to know why.
The two only 'notable' global caches MySQL uses are:
table cache
key_cache
max_connections
If you set the table cache to 64, the key cache to 0 and
max_connections to 10, you will have a setup that is usable for most
of your 'low volume' users, without any significant overhead.
Regards,
Monty