更新时间:2024-10-16 GMT+08:00
SQL调优流程
对慢SQL语句进行分析,通常包括以下步骤:
操作步骤
- 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见更新统计信息。
- 审视和修改表定义。
- 通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。
- 通过查看执行计划来查找原因。如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精准地定位问题原因。有关执行计划的详细介绍请参见SQL执行计划。
- 针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见SQL调优进阶。
- 用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息等多个手段来进行执行计划的调优,以提升查询的性能。详细请参见使用Plan Hint进行调优。
- 为了保证数据库性能的持续优质,建议例行维护表和例行重建索引。
- (可选)GaussDB(DWS)支持在资源富足的情况下,通过算子并行来提升性能。详细请参见SMP并行执行。
父主题: SQL调优