>  Q&A  >  본문

如何优化每月5亿的流量数据?

场景:在MySQL数据库基础上的一个电信计费系统,10万用户,流量明细单表(号码,归属地,时间点,上网时长,上网套餐,扣费),每天插入1000万的数据,一个月有5亿数据,插入的同时,需要进行计费,如你用了100K流量扣0.01毛钱这样的更新余额操作
问题1:你怎样设计表容纳这么多数据?
问题2:你怎样做让插入和更新操作更快?
问题3:如果用户每个月需要查询一次自己的流量详单,大概从全表30亿数据(6个月的话单)中查询出500条上网流量记录,你怎么做?

我的想法
1.因为插入和更新需要捆绑在一起,所以要用innodb引擎
2.按天来使用mysql的分区表,单表存储1000万数据,数据量会不会大了点?
3.我在想为了加快插入的和更新操作,到底是否要对“号码”设置为主键呢?,是否需要在MySQL前面加redis呢?我自己计算了一下,每秒大概166个事务(写入,更新),需要优化吗?

有很多困惑的地方,谢谢大家~


大家讲道理大家讲道理2923일 전736

모든 응답(2)나는 대답할 것이다

  • 代言

    代言2016-11-11 11:40:13

    建议使用水平分表技术,可以以用户ID等属性来分,假如分1000张表(当然实际分多少表可以按照一定的需求来)
    这样的话,每张表分到大约100个用户,每个用户每月500条基础信息计算的话,一个表一个月就有100*500=50000数据量,存储一年的数据的话,单表的数据量也就60万,一般基础数据留存3年左右的话,单表大致2000万数据量,数量级控制在千万级
    当然想真正提升性能,还得先分库后再分表,分库后的麻烦就是如何保证数据的强一致性(看需求业务对数据的严苛性怎么样了)
    对大量数据的处理不考虑NoSQL的话一般都是分库分表处理

    회신하다
    0
  • 代言

    代言2016-11-11 11:40:03

    是否考虑使用nosql,你所关心的问题是更新,插入,查询等操作的效率

    회신하다
    0
  • 취소회신하다