想问下关于数据库负载的问题

bigman

问题描述

现在公司有个程序用于bi统计数据分析的后台,目前所有的统计数据都是通过各种复杂sql语句联表的复合查询得出的结果集。所以对数据库的计算压力比较大(虽然加了各种索引),目前的临时解决方案是提升硬件能力,比如在阿里云上面买个16cpu 64g的独享数据库主机(这样能很大程度上缓解)。但是还有些c端程序也要跑,所以会会在这个数据库上面部署多个库。那如果那个统计的程序对数据库的压力比较大计算比较耗时,是否也会影响其它库的读写?应该影响比较大吧?有什么好的解决方案吗?

341 2 0
2个回答

powerbowen

我们之前是BI那边定期拉基础数据到他们自己的资源库,然后根据自己的算法生成BI报表,他们那边只拉数据,操作都是自己玩的,不影响业务这边

  • bigman 2022-11-25

    我知道,只是目前公司的规模不允许

  • powerbowen 2022-11-25

    是否可以单条数据单挑数据更新,这样的话搞一个统计表,然后相应关联数据调整走队列修改对应数据

  • bigman 2022-11-25

    现在的现状是都是依赖sql查询,所以数据库压力比较大而且统计数据时间跨度也大

  • powerbowen 2022-11-25

    1.数据实时性要求怎么样。2.是否可以进行统计数据分时段存储(按需求存储单位时间内需要的数据)。3.是否可以直接统计数据落到一个统计表里,统计表中数据按照数据修改情况使用队列更新。
    比如你一个东西要联好多表,查询好多字段,是不是可以初始化这个东西放到一个表里,然后修改的时候只维护修改内容设计的那几项列,这样计算就在代码里,不用SQL计算了。

  • bigman 2022-11-25

    优化什么的后期都能做,目前的现状就是这样。主要是这样一个数据库实例多个数据库 还是会影响c端的程序会变慢吧?

  • powerbowen 2022-11-27

    一个实例多个库的话,共同占用CPU内存的,如果有慢查询占用cpu内存的话,其它也会变慢的

  • bigman 2022-11-29

    谢谢!

chaz6chez

最简单的实现方式,主从数据库,bi读从数据库;
稍微优化点,做定时脚本管理,脚本将数据以时间序列的维度进行统计,比如一个小时一条数据;bi系统将每小时的数据进行累加或者列表展示或者其他统计处理;
稍微再优化一下,将不同的数据源的数据,通过ETL迁移至数据仓库/数据湖服务,定时调度器对数仓/数据湖服务进行统计运算,生成不同的维度表,BI系统对维度表进行二次运算得到结果值,或者BI系统直接对数仓/数据湖进行sql查询得到业务数据。

  • bigman 2022-11-28

    谢谢!后面持续做优化!

🔝