查看执行计划
- explain 仅仅生成执行计划、sql没有执行
- explain analyze sql会执行,并收集实际运行中的一些信息
性能优化手段
- 表结构、表数据变动后执行analyze table
- 执行计划中没有让小表hash join,说明表的统计信息有误,大表、小表都执行analyze
- 设置distribution_key,distribution_key决定数据存储在哪个shard
- Motion node不合适时,设置参数关闭对应的motion
-
Redistribute motion(hash分布或随机分布)
-
Broadcast motion(广播至所有shard)
-
gather motion (聚合到一个shard)
-
Forward motion(联邦查询,外部数据源和内部数据源)
-
- dictionary_encode有利于字符串的快速比较,但是多了一个decode过程,合理设置哪些字段需要dictionary_encode
- 行存(服务类应用选择行存),列存(分析类应用列存)
- 字段类型选择合适的
- 分区
- 索引