在大环境下的数据库主要有两种情况会出现负重过载:
1. 海量数据的实时统计,比如报表统计
2. 数据库连接数不够用,网站瞬时访问数过大
在这次分享会上有人提出了mysql集群的概念,其实mysql集群用的并不多,因为mysql用来做集群维护成本实在太高了,而且据我了解没有几个大项目才用了mysql集群,正式投入生产环境的几乎没有。我们一般用主从复制来做就行了。
考虑到实时统计,如果1亿条数据,数据库要做统计并且计算的话,那么效率是很低下的,更别说多表关联了,如果有多个客户端来查看报表的话,那么基本整个数据库很可能会挂掉,所以,我们都是在大半夜定时来计算的,把计算的结果放入nosql比如mongodb中,统计的日期可以根据具体的需求来定,一般以日为单位,这样报表的数据量就会很少,而且在查询nosql的时候效率会十分高。
关于连接数的问题其实也是长久以来的问题,当网站达到一定的用户量,很有可能会发生这样的情况,那么这个时候要看程序设计了,比如是否有效的关闭无用连接。此外还要加入队列,让连接等待。
两天的分享会,把大致的笔记整理了一些,可能写的有些凌乱。下阶段会讲讲分布式系统相关的吧。