数据库调优过程(五):物理分表,及写入方案调整

  • 背景:
  1.      enb下包含多个文件,我们需要解析这样的数据到数据库中,供应用端计算分析使用。之前,我们已经采用了分表方案,分表分为一个主表,三个子表。每一个enb一套表。
  2.      解析业务:

     每取到一个文件就读取为一个实体集合到内存中,当一个文件读取完成后,调入库接口;在入库时,先把这个实体集合拆分为主表的datatable对象,三个子表的datatable对象,之后并行入库。

  • 分析:

    基于上边的一共包含两个弊端问题:

  1.     内存占用高:我们先读取为一个实体集合,之后转化为4个datatable对象才能进行入库,这个过程相当于内存中的数据量成倍的增加了,空间也比最小化内存多了几倍。
  2.     入库速度不高:由于入库表过多,而且连接数也有限,网络带宽成为瓶颈,虽然分表了,但是处理一个enb时,需要写入4个物理表;如果并行16个ENB,则会有16enb*24文件*4表次连接写入,过多的连接对sqlserver数据库也没有好处,写入文件过于分散也使得数据库吞吐量提不高。
  • 调整:

  分表改进:

               把原来的分为一套表(一个主表,三个子表)方案修改为一个表,避免过多表同时要求写入影响数据库IO吞吐量;

      解析业务调整:

               每取到一个文件就读取为一个datatable到内存中,当一个文件读取完成后,调入库接口;在入库时,直接把datatable对象入库。

      数据库连接池满问题:

     针对该问题,我们把所有的数据操作尽可能使用一个连接,避免并行打开过多连接,尽量使得一个enb处理过程中只使用一个数据库连接,同一个enb处理过程中,尽量串行处理。

     通过加大并行处理enb数量,来提高cpu,memory,io利用率。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值