I agree with Mike here.
Memcached can help, but it's more towards the application layer than the data storage.
Which version of mysql does your friend use ? And with which table engine?
On which platform (win32, or linux/bsd? And if linux, which distribution ?).
If the server(s) are on linux/bsd, start by installing mytop [
http://jeremy.zawodny.com/mysql/mytop/ ] to monitor the server, and enable the "slow queries" loggin in the mysql configuration file my.cnf [
http://dev.mysql.com/doc/refman/5.0/...query-log.html ]
Look here for tips on identifying the slow queries sent to the db:
http://techgurulive.com/2008/08/25/h...-slow-queries/
And what kind of disk subsystem does the server (servers?) uses? sata, scsi160, fiber channel?
I know for example that partitions support was introduced only in 5.1
If a multiple servers solution could be envisaged, and given that there are more select than update/inserts, a couple of server could be clustered and replication could be implemented.
This would allow your friend to level the load on several machines, and give him a bit of redundancy.
Quote:
|
I don't know if it really works, how difficult to set up
|
Simply, you start the service, and then you implement in your application a call to the server in the form of this pseudo code:
Code:
if(memcacheSrv::check(key) exists){
data=memcacheSrv::fetch(key)
}
else{
data=query_db
memcacheSrv::put(key, data, ttl)
}
This would mean that all the application of your friend customer should be modified to implement this.
Not really feasible in my mind.
Last edit :-)
I just found this site:
http://www.mysqlperformanceblog.com/ when I was looking in a mysql inc slide about performances.
It might gives you pointer and help your friend too.