海量数据和高并发经常被连在一块说事儿,但是他们完全是两回事儿。海量数据纯指的是数据库的海量数据,而并发指的却包括数据库和服务器的高访问量。
海量数据解决方案
1.使用缓存:
- 使用缓存框架。常用的框架:Ehcache,Memcache,Redis等。
- 好多事情都是相辅相成的,相比来说使用缓存更多是用来解决高并发问题的,因为海量数据导致了访问的缓慢,容易造成高并发问题的严重性,又因为数据库一般是web访问的瓶颈,所以我们在业务逻辑允许的情况下尽量先避免操作数据库,于是,就有了缓存。将必要的数据存放在内存中,而不必每次都去数据库中读取造成不必要的性能浪费和加快访问速度---这就是缓存带来的好处。
2.页面静态化
3.数据库优化:
- 表结构优化
- SQL语句优化
- 插入更新缓慢,通过分区、分表解决
- 索引优化
- 使用存储过程
- 分离活跃数据(例:有一个表只有10几个字段,表有130万条数据,但大小已经到了5G的数据,这本身是不太合理的,这么少的数据占用了太多的数据,说明其中有些字段存储了大量的字符串(比如说文章内容等),每次检索这个表时大部分是用不到这些大字段内容的,但却需要耗时比较长,产生很多的慢日志。这时我们可以考虑将表进行垂直切分,将活跃数据分离开来,这样能大大加快访问速度)
- 读写分离(读写分离的本质是对数据库进行集群, 这样就可以在高并发的情况下将数据库的操作分配到多个数据库 服务器去处理从而降低单台服务器的压力)
4.分布式部署数据库
- 将不同的表存放到不同的数据库中,然后再放到不同的服务器中。有些复杂问题,如:事务处理,多表查询。
-
任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库通过读写分离之后将一台数据库服务器拆分为两台或者多台数据库服务器,但是仍然满足不了持续增长的业务需求。分布式部署数据库是将网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。
分布式部署数据库是一种很理想的情况,