别让数据库太累

 最近公司有需求,需要将两张表中数据进行过滤。过滤条件为,如果B表中数据在B表中存在,将B表中对应数据删除。

        以前同事在做这件事情的时候,考虑到所有数据都在保存在数据库中,所以就直接使用sql语句进行处理,但是很遗憾。因为一张表数据有上千万,另一张至少也上百万。如此大的数据交结sql,实在很为难sql服务器。基本上等处理完这些数据,至少也一两个小时过去了。如此的性能,真是很难在实际工作中运用。造生性能的原因当然有也可能是sql语句没写好,在此不作更多讨论。一但此运用一打开,sql服务器将占用CUP100%,让其它服务都不得不停下来。使在让我们很为难。

         后来同事改成只从数据库提取数据,利用hashset来对数据进行过虑,时间却少了很多,如此大的量,只需要30秒左右的时间。CPU使用百分比也很小。

         1两小时与30秒之间的对比,这让我不得不对数据库的处理功能另眼相看。

      数据库在设计上功能的强大不可否认,但也正因为他功能如此强大,它考虑的问题将更多,可能他不仅要考虑我们数据的过虑,还会考虑其它一些业务,所以数据库在设计在可能会有折衷的考虑,不一定是我们解决问题的最好办法。(个人推理,无从考证)

      数据库是因为保存数据而设计,虽然现在的数据库提供这样、那样的处理功能,但我还是建议把这些功能交结我们自己来处理。让数据库做它最本质的功能,数据增删改。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值