联机交易流水表如何设计

以下业务场景, 有什么好的 mysql 方案
系统最繁忙的交易订单表, 每秒 600 笔交易, 每天大概 2000-3000 万笔交易。交易 7*24, 不能停机。交易流水需要永久联机查询, 每笔交易流水绝大多数情况下在 20 秒就不再有任何更新写入操作。 但是部分 (非常少) 交易涉及到退货,在 3 个月内还存在更新的可能, 但是每笔交易流水三个月后都不会再有更新操作。 应该如何设计这个交易流水的存储方案?

有没有经验丰富的大牛可以分享下相关方案?

讨论数量: 6

你怕不是腾讯阿里的架构师来骗方案的吧,这个并发看着一般,但是数据量很恐怖啊,已经不是 mysql 的范畴了,没什么方案,加机器,分表,索引,限制查询范围,仅此而已

2年前 评论
epiphyllum (楼主) 2年前
pndx

Mark, 等大佬,这问题看起来很好玩

2年前 评论

既然是交流交流,那本菜鸟先来打头阵,也好抛砖引玉

方案初号机:基于日期的 bigint 流水号

流水号格式:

位置 1~2 3~10 10~19
说明 预留:可用于业务 id,机器 id 等 日期 每日自增值
示例 10 20220705 000000001
实际使用范围 00~92 00000000~99991231 000000000~999999999

单人最大订单量 9.99 亿,可以用到 9999 年

2年前 评论

找个时序数据库,分分钟的事

2年前 评论
唐章明

每天一张表 (Mysql 两三千万没有太多压力 如果慢再细分一下也可以)

MYSQL 保存最新 4 个月数据 每次查询最近 4 个月查询 MYSQL

订单超过 3 个月的移动到表格储存 (www.aliyun.com/product/ots)

订单查询 4 个月以前的数据就从表格储存读

之所以保存 4 个月而不是三个月是因为查询第四个月的时候可能还没完全迁移到表格储存,所以 MYSQL 保留 4 个月数据

2年前 评论