现在我遇到了一个问题,在mysql数据查询的时候,因为查询的数据时间跨度太长导致数据库cup爆满了, 请问这种应该怎么办,或者怎么优化数据库呢/
将时间跨度大的一张进行分小时存贮,根据业务进行汇聚查询,只能将表做二次处理
分开几个阶段来查询最后合并
换一个好一点的数据库服务器cpu。
1.看索引分析,命中率问题,优化索引。
2.业务分堆查,比如按月,按年再合并。
3.如果数据量过大,尝试读从库,也可尝试分库分表(牵扯太多)。
用dataworks操作,不会遇到这种问题
要看你实际的数据量,具体的sql,还有表的设计,才能帮到你。
你的数据量总体有多少,如果上千万的话,加索引也扛不住;有几个方法可以尝试优化的
1.一般常用的查询方法是分页,但是分页会越来越慢;(数据量过大的话不建议使用)
2.数据库分表,使用 md5 将数据分表,减小单个表的查询压力(这个在业务方向上应该是很好的)
3.数据量真的过千万了,我一般是遍历的,他的查询速度不会很慢,如果不跨网络,速度大概能达到 1秒刷 10W 数据,然后再记录一下时间是否超时的数量就可以实现。(我一般操作的是 pg,10亿的表跑一遍大概是 5 小时左右,你对时间的要求不大的话可以选择尝试一下)
是你的sql太慢占用了太多连接