利器1.多线程处理
利用线程池设计,同时处理多个请求。
线程池中线程个数=CPU个数+1;//对计算密集型的情况适用
如果程序的逻辑处理需要对 DB,IO,redis 有操作。会增加CPU的占用率。
利器2.缓存处理
使用nosql,例如:redis;
设计思路:
存:首先,把巨多请求数据保存在redis中;
然后,使用定时job没3秒钟将redis中的数据保存到db中;
最后,清除本次处理的redis中的数据,3秒后进行下一次处理。
优点:对数据库的操作,有多线程变成了单线程。减轻了数据库压力;
对调用者,减少了,response的等待时间,因为存redis非常快,可以达到:110000/s次。
查询:
1.巨多查询线程直接从redis中读取数据,并返回给客户端;
2.使用定时job每个30秒钟更新redis中的数据。
优点:对数据库的操作,有多线程变成了单线程。减轻了数据库压力;
对调用者,减少了,response的等待时间,因为读取redis非常快,可以达到:81000/s次。
利器3.数据库分表设计
对数据量很大的情况,可以使用分表设计。
例如:有一个送花服务,一个月的数据量将达到:20亿条记录。
那么就采取了:每个月一张表,表名:songhua_201401,songhua_201402 等。
同理,也可以使用一年一张表,一天一张表等情况。
优点:
2.查询时,表中数据少,比较快。
利器4.数据库分库设计
此设计和分表设计是一种意图;分为以下2中情况:
1.多库保存/查询
对于海量数据,采用分库保存,查询。
数据库命名一般带有时间后缀,或序号。如:event_lvzhuhen_01,event_lvzhuhen_02
优点:同分表设计;
2.存/查库分离
即:一个库专门用来存储数据;一个库专门用来查询数据。
优点:可以提升数据库性能,保证数据安全。
问题:需要同步数据:使用定时的存储过程,定时从储存库往查询库中同步数据。