痛点
在设计xx交易系统日均处理百万级订单,系统面临一些挑战:
- 高频写入
- 复杂查询
- 性能瓶颈
需求拆解
- 写入延迟≤5ms,查询响应≤20ms
- 避免全表扫描
- 未来支持动态新增查询需求
上代码
索引名称 | 字段 |
---|---|
PRIMARY | order_id |
idx_user_status | user_id, status |
idx_asset_time | asset_code, trade_time |
idx_type_status | order_type, status |
idx_time | trade_time |
- 舍弃低频索引:比如amount字段的查询(交易金额筛选仅仅占查询量的5%)
- 合并高频组合查询:比如idx_user_status包含user_id和status查询
- 避免冗余索引
一句话总结
索引基本双5就够了
后续
用Clickhouse分流查询,减轻OLTP数据库压力