技术栈
跨分区事务
ly7689
2 小时前
spring data jpa
·
分区裁剪
·
postgresql 分区表
·
约束排除
·
跨分区事务
PostgreSQL 分区表在 Java 应用中的路由陷阱:约束排除、分区裁剪与跨分区事务
假设有一张订单表 orders,按 created_at 做范围分区,每个月一个分区,已经积累了三年共 36 个子分区。某天运维发现一个奇怪现象:按月查询比按天查询快得多,可是按“客户 ID + 时间区间”查询却几乎全表扫描,跑几十秒。更怪的是,同一个 SQL 在 psql 里 EXPLAIN 显示只扫了 2 个分区,但 Java 应用里发出来的同一条 SQL 却扫了 36 个。
我是有底线的