数据库单表数据量太大的优化方案总结

场景:一个表每天新增几万数据,目前单表总数据量在几百万数据。会查询粒度大的统计数据,也会查询粒度比较小的数据,当天更新的数据查询频率最密,最近几天的数据次之。
随着数据越来越多,数据库的性能开始变低。那么应该从哪些角度出发思考优化方案?
1.从时间特征出发:看看大约的更新时间点,在这个时间点之前的当天数据查询,直接返回“没有更新”提示,不用查库;
2.从数据特征出发:
1)热点数据是当天的数据,所以可以设立一张当天数据表,在更新到原表的同时,也更新到当天数据表。查当天数据的时候就访问这张表,由于数据量更小,所以查询速度会更快。第二天将此表清空,再次同步数据。但这个方案的缺陷是数据会冗余,而且万一要看前几天的数据,那和查前几个月的数据一样慢;
2)有时候需要查询粒度大的数据,所以可以在同步数据的同时,统计数据并存储起来,加快查询统计数据的速度;不过也是会造成数据冗余;
3.从查询优化出发:优化sql:
1)减少嵌套子查询、查询连续数据时用between and代替in等;
2)加上索引,但加索引可能会影响更新效率,用explain执行计划查看优化效率,结合理论知识找出权衡最佳的索引组合;
4.单表数据量太大,负荷过重,会影响sql执行的性能。为了加快查询和更新速度,最佳的解决方法是分表,可以根据数据的冷热、更新时间(数据连续)、某个的哈希值(数据不连续)来进行水平拆分。但要确保每个单表的数据量在一定的范围内;
以上是适合上述场景的优化方案,事实上优化处理的方式还有很多,但务必结合具体的场景情况分析。
代孕网【网址:bztss.com】 代孕公司【网址:bztss.com】

猜你喜欢

转载自www.cnblogs.com/y7y457yrty/p/12924036.html