锁统计信息没用,应该会更差,就跟上面说的。统计信息认为当天没有新插入的数据,所以才使用的 HashJoin,你锁定了统计信息,不还是一样的。
- 如果统计信息在分区表上锁定,那么该分区表上所有分区的统计信息就都保持锁定。
- 如果表或者分区被 truncate,该表或分区上的统计信息锁定将会被解除。
创建一个新分区,自动锁定新分区。参考文档:https://docs.pingcap.com/zh/tidb/stable/statistics
做个定时收取统计信息吧,感觉还是分区表统计信息收集不及时导致的。
是的,我现在就是这么来解决的,加了个定时任务在数据读取之前,进行下 ANALYZE TABLE。不过奇怪的是,之前在非分区表下,即便没有 ANALYZE 也没有报错,感觉还是分区表有啥特殊处理导致的。
是的 分区表比单表统计信息更复杂。
分区统计信息和 global stats 两部分。