机器实在负荷不了
如果做了以上调整服务器还是不能承受那就只能通过架构级调整来优化了
mysql同步
通过mysql同步功能将数据同步到数台从数据库由主数据库写入从数据库提供读取我个人不是那么乐意使用mysql同步因为这个办法会增加程序的复杂性并常常会引起数据方面的错误在高负荷的服务中死机了还可以快速重启但数据错误的话要恢复就比较麻烦
加入缓存
加入缓存之后就可以解决并发的问题效果很明显如果是实时系统可以考虑用刷新缓存方式使缓存保持最新在前端加入squid的架构比较提倡使用在命中率比较高的应用中基本上可以解决问题如果是在程序逻辑层里面进行缓存会增加很多复杂性问题会比较多而且难解决不建议在这一层面进行调整
程序架构调整支持同时连接多个数据库
如果web加入缓存后问题还是比较严重只能通过程序架构调整把应用拆散用多台的机器同时提供服务如果拆散的话对业务是有少许影响如果业务当中有部分功能必须使用所有的数据可以用一个完整库+n个分散库这样的架构每次修改都在完整库和分散库各操作一次或定期整理完整库当然还有一种最笨的把数据库整个完完整整的做拷贝然后程序每次都把完整的sql在这些库执行一遍访问时轮询访问我认为这样要比mysql同步的方式安全
使用 mysql proxy 代理
mysql proxy 可以通过代理把数据库中的各个表分散到数台服务器但是它的问题是没有能解决热门表的问题如果热门内容散在多个表中用这个办法是比较轻松就能解决问题我没有用过这个软件也没有认真查过不过我对它的功能有一点点怀疑就是它怎么实现多个表之间的联合查询?如果能实现那么效率如何呢?
使用memcachedb
数据库换用支持mysql的memcachedb是可以一试的想法从memcachedb的实现方式和层面来看对数据没有什么影响不会对用户有什么困扰为我现在因为数据库方面问题不多没有试验过这个玩意不过只要它支持mysql的大部分主要的语法而且本身稳定可用性是无需置疑的
[] [] [] [] [] []