一、分库分表下的无分片键查询困境
在分布式数据库架构中,分库分表通过分片键(如买家ID)将数据分散存储,显著提升了单表性能和系统扩展性。然而,当业务需要从非分片键维度(如卖家ID)进行查询时,传统架构暴露出以下核心问题:
1.1 跨分片扫描的性能灾难
- 数据分散性:以电商场景为例,订单数据按买家ID分库后,同一卖家的订单可能分布在数百个分片上。
- 查询复杂度:卖家查询订单需遍历所有分片,执行
SELECT * FROM order WHERE seller_id=123
,导致:- 网络I/O激增:假设1024个分片,单次查询需发起1024次数据库请求。
- 结果集合并压力:应用层需聚合数万条数据并排序,内存占用和CPU消耗呈线性增长。
1.2 数据一致性与实时性矛盾
- 业务需求冲突