东东
发布于 2025-03-10 / 2 阅读 / 0 评论 / 0 点赞

每天1000万交易数据如何做优化

每天1000万买卖交易数据,如何做查询优化

问题梳理

每天1000万的数据,每个月就有3亿多的数据,每年就可能有30-40亿的数据

里面有三个比较关键的问题:

1、存储,如何存储这些海量的数据

2、查询,如何提高查询效率?

3、并发,并发性能如何优化

解决

存储问题

1、分库分表

当数据量小的时候,交易表可以单独做为一张表,当随着数据量越来越大,单表的性能就会达到瓶颈,我们就可以进行分表。

比如说,按照月份进行分表,或者我们可以建10张到20张的表,根据用户ID进行取模预算,然后分表存储数据。

上面说的这种方案,随着时间的推移仍然会造成每个表出现海量的数据

在这个的基础上,可以增加分库处理。

我们可以同时新建10个交易库,每个交易库再按照每年12个月新建12张表。

存储数据的时候,先根据用户ID进行取模运算,将数据分布在不同的数据库,然后进入数据库后,再根据时间进行分布存储。

2、冷热数据分离

上面的方案,仍然会出现新的问题,如果每年都这么存储,数据量仍然会越来越大。这个时候就需要在业务上进行限制。

一方面通过调研判断用户常用的数据范围,另一方面引导用户减少历史数据的查询。

通过业务上的限制,将数据分为冷数据(用户查询非常少的数据)和热数据(用户高频查询的数据)

区分后,可以将冷数据放在存储能力更强的数据库中,如clickhouse这种,热数据存储在mysql,使用分库分表来优化。

然后通过调度任务,逐步将热点数据变冷进行存储

查询问题

解决了存储问题后,还可能会有查询问题,比如说如果遇到需要查询冷数据,而且需要涉及到复杂的搜索的时候,查询性能就会比较差。

这个情况可以通过引入新的中间件,比如说ES数据库,专门为高性能查询搜索而生。

高并发

如果某些高频的情况,查询的量非常高,可以通过将数据预热到Redis中进行进一步的优化