- 海量数据的解决方案
-
- 缓存和页面静态化
- 缓存可以使用map(ConcurrentHashMap)直接保存在内存中,或者使用缓存框架Ehcache,Memcache,Redis等。缓存最重要的是缓存的创建时间和失效机制。缓存应该把空值定义一个类型,防止查到空的缓存后频繁查找数据库查找值,缓存适用于实时性要求不高且不频繁变化的数据
- 页面静态化,将程序最后生成的页面保存起来,可以使用模板技术freemaker,velocity生成静态页面,也可以使用缓存服务器squid和nginx等
- 数据库优化
- 表结构优化
- SQL语句优化
- 分区:将一张表中的数据按照一定的规则分到不同的区来保存,查询数据时如果数据的范围在同一个区内那么可以只对一个区的数据进行操作,这样操作的数据量更少,速度更快。
- 分表
- 索引优化
- 使用存储过程代替直接操作
- 分离活跃数据(把不活跃的数据放到另外的数据表中,查询的时候先到活跃表中查询数据查不到再去查不活跃数据的表)
- 批量读取和延迟修改(通过减少操作次数来提高效率)
- 批量读取是将多次查询合并到一次中进行。可以是同一个请求中的数据批量读取也可以是多个请求的查询合并到一次进行。
- 延迟修改,针对高并发且频繁修改和新增的数据,可以先将需要修改的数据暂时保存在缓存中,然后定时将缓存中的数据保存在数据库中,程序在读取数据时可以同时读取数据库中和缓存中的数据。
- 读写分离
- 缓存和页面静态化
时间: 2024-10-15 17:48:06