zoukankan      html  css  js  c++  java
  • 简单统计类页面后台设计

    最近做了一个概览页的功能,需求和前提如下:

    数据已经做了分库分表,量大,B表为A表的下级数据

    1. 需要统计按照不同维度A表内和B表内的数据总量

    2. 需要分别统计A/B两个表在给出的某段日期区间内的总量和增量数据统计

    需求看似十分简单,一开始完全无脑的实现

    对于1,就是多线程分别统计然后合并加载到缓存

    对于2,也是多线程分表统计然后加载到缓存,缓存为查询的开始结束日期

    结果?慢的令人发指,应届生可能都做不了这么差

    这里有什么问题?

    1. 首先这里我忽略了两个表之间的关系,在第一个表中隐含了第二个表的统计数据,但是测试环境数据不准,导致我没用这个特性,后来经过咨询别人知道线上没有这个问题,可以直接用这个现有信息做统计  --- 及时沟通很重要

    2. 数据是死的人是活的,当天之外的历史数据永远都不会变,为什么还要每次查? ---  通过一个任务触发历史数据加载到Mongo数据库,之后每天1点加载前一天的变化数据到Mongo,这样当天之外的数据完全不需要跟业务表打交道

    3. 对于业务表查询的SQL语句,如果是包含>= and <=之类的,性能远低于=,切换思路后,所有的数据查询都变为了某一天的数据查询,本身的SQL性能也得到了提升

    4. 对于包含当天的数据查询,考虑到数据库分库分表时已经是有序的,所以可以利用这个特性当天数据从最后一张开始查,这样顶多查两张表就没有数据了,减少了查询表的数量,提升了查询效率

    5. 提升用户体验,利用后台定时任务每隔几分钟触发一个更新缓存的任务,这样,对于页面使用者体验就会更好,基本没有等待 

    通过这个简单的任务过程,会发现自己在开发中还是缺少思考,技术永远是为业务服务

  • 相关阅读:
    如何搭建企业级中台系统
    Linux上安装git
    Jenkins的CI持续集成
    docker安装jenkins
    在线思维导图网站
    K8s容器编排
    MySQL存储引擎
    tomcat8 进入不了Manager App 界面 403 Access Denied
    IdeaVim-常用操作
    Node.js 安装及环境配置之 Windows 篇
  • 原文地址:https://www.cnblogs.com/it-worker365/p/9989329.html
Copyright © 2011-2022 走看看