症状

公司要对某几个系统的数据做报表分析.数据量还不小,如:今年的数据,一个表有几千万条记录,数据是放在mysql上面的,用户要看今天想销售总额,就得sum这几千万数据,MySQL执行sum,count等语句时需要全表扫描,由于数据量太多了导致sql语句执行过慢,返回报表结果过慢.

治疗方案(穷人)

写个定时任务,把几千万数据按天sum,count出来的结果存起来,这样用户查询最近一年的销售额sum 365条记录就可以了,比sum几千万数据快了不少,表结构如下

date sumMoney recordCount
2018-08-29 36478 355
2018-08-31 34798 365

且慢,先别关网页!你以为事情这样就解决了?too yang!这只是理想情况,真实情况是有很多傻逼用户要修改数据的,比如今天是8月31日,

  1. 傻逼用户昨天录了一条销售日期为8月12日的销售记录
  2. 傻逼用户发现之前的一条销售日期为8月14日的记录录错了然后修改销售日期为1月12日(7个月前).
  3. 傻逼用户把销售日期为8月13日的某几条数据删除了

很好,非常好!我就喜欢这种喜欢搞事的用户!

  1. 用户执行了第一步之后,会造成sum好的08月12日的数据不准确
  2. 用户执行第二步后,会造成sum好的08月14日和1月12日的数据不准确
  3. 我什么都不想说
解决方法32个
  • 禁止傻逼用户修改删除数据,只能录入当天数据

  • 每天都开启定时任务,把所有的数据都按天重新sum一遍,保证数据准确性

  • 新建一个操作记录表,写个触发器,监听所有要统计的表,只要用户对该表进行了写操作就往操作记录表插入数据,定时任务读操作记录表,重新sum操作记录涉及到的日期当天的数据,操作记录表结构如下

dateBefore(用户操作前日期) dateAfter(用户操作后日期) dable(table是关键词,用dable)
2018-08-29 2018-08-12 saleRecord
2018-08-31 2018-08-13 rechargeRecord

上面的方案能一定程度上解决问题,但是缺点也很明显:

  • 数据实时性不高,修改数据后,得等定时任务运行完才能得到准确的数据

  • 得额外写一个定时任务,触发器等,增加工作量

  • 过分依赖业务,如:统计距离当前用户位置50公里内的店铺数,用这种方法就无法实现,因为用户位置是动态的,不可能提前sum好,只能实时sum.
    那么,还有没有更好的解决办法?当然是有的,那就是

充钱!

想一想,不充钱你会变得更强吗?


充钱之前,我先要介绍一下,我们到底要充钱买什么.那就是买

OLAP数据库

买买买!!不买还是人?

OLAP数据库介绍

当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。以上介绍是网上复制来的,在下从不重复造轮子

在下对于OLAP数据库的理解

简单说,就是OLAP数据库主要用来做数据分析的,OLTP数据库(如传统的关系型数据库)主要用来做增删查改的.

数据量大时OLAP数据库执行sum,count等语句比OLTP数据库快很多.

那么问题来了,为什么OLAP数据库这么快?

那当然是因为OLAP数据库用了并行计算.什么是并行计算?你他妈不会百度吗?本篇文章不重点介绍并行计算,下面通过一个例子来说明:

在下拿了几箱1分,5分的硬币,一共2万大洋去阿里云买OLAP数据库,阿里云某个工作人员数(sum)了1个小时,确认金额无误(OLTP数据库做法),另外几个工作人员在旁边吃瓜看戏
你们可能问:"拿钱去阿里云之前你花了多长时间清点硬币总金额的?"
在下:"6秒"
你们很可能会说:"继续吹,装逼不用交税的."
在下:"在下手握50万肉鸡,几千个0day,3秒内黑入NSA..."
你们非常可能会说:"停停停,能说一下你怎么在6秒内sum出总金额的吗?"
在下:"在下花了10大洋,请100个小学生每人吃了根棒棒糖醒醒,现在棒棒糖要5毛一根,每人给了一箱硬币叫他们sum,在下再sum一下他们sum的结果就可以了.(并行计算)"
你们一定会说:




在下:

回归正题,买了OLAP数据库,要怎么用?
  • 再冲个几十万请大神来教你用啊!
  • 简单,在下买了一个兼容原来OLTP数据库的OLAP数据库,在下把整个数据库都迁移过来,打完收工!就这么简单.

好了,数据库切换完成的第二天,一堆傻逼客户打电话过来投诉说删除和修改数据数据怎么这么慢了,什么垃圾系统,退钱!

好了,在下已经删库跑路了.

全文完.谢谢观看.

如何应对运营商劫持

今天来聊一聊飞妈的运营商劫持. 现象: 你是否试过下载一个游戏apk,下载下来发现是个360安全管家的apk? 你是否试过访问百度毒首页,自动被重定向到了http://...

阅读全文

密码保护:电脑高手的故事

很久以前,有次我电脑坏了,因为我是电脑白痴,我朋友给我介绍了一个高手来帮我修电脑。 他看了一下电脑说:CPU烧了,你看都冒烟了。我一听就急坏了,离这儿2...

阅读全文

求职

本人黑客,会注入,会上传,会Xss,会破解,会嗅探,会开发,会业务,会运维,渗透,社工,无不精通,祖传三代黑客。 电话通知后10秒钟上线,身体强壮可持续...

阅读全文

欢迎留言