手动analyze一张大表超出内存限制

1、跳过无关或大列类型
如果表中存在 TEXT、BLOB、JSON 列,而这些列对查询优化统计意义不大,可设置 tidb_analyze_skip_column_types 跳过这些类型,从而减少内存负载。
2、降低采样率与桶数
虽然用户已经设了 0.01,但如仍超限,可以再调得更低;或者减少桶数(bucket 数量越多分析越细,内存越多)。
但要权衡统计精度 vs 系统资源。
3、按分区或拆表进行统计
如果该大表是一个单一大表,无分区,建议启动分区表或拆为多个逻辑子表。之后对每个分区/子表分别执行 ANALYZE,这样单次操作内存占用会更小。
在 TiDB 中,分区表分析可能有优化路径。
4、调整内存限制(如果资源允许)
将 tidb_server_memory_limit 提高到一个更高阈值(例如 30G 或更高,视节点内存情况)可以暂时缓解。
但这只是治标,不宜长期依赖,且耗费资源大。