Trafodion SQL调优基本步骤

来源:互联网 发布:免费网店推广软件 编辑:程序博客网 时间:2024/05/16 16:15

最近经常会被人问到SQL执行很慢,如何使之跑的更快一些,这篇文章主要在此总结一下我在遇到这个问题的一引起心得体会,叙述一下SQL调优的基本步骤,如有错误,欢迎指正!

我认为Trafodion中的SQL调优可以大致概括如下,

  1. 获取SQL执行语句

  2. 获取表DDL,可以通过执行“SHOWDDL table_name;”生成

  3. 步骤1 和 2 也可以通过收集OSIM实现,方法如下,
    a. Sqlci;
    b. CONTROL OSIM CAPTURE LOCATION ‘osim’;
    c. PREPARE ss FROM query_text;
    d. CONTROL OSIM CAPTURE STOP;

  4. 获取表的统计信息,可以通过执行“SHOWSTATS FOR TABLE table_name ON EVERY COLUMN;”生成

  5. 通过1中的SQL语句及2中的表DDL,判断表的KEY(PK或STORE BY)字段定义是否合理以及表的分区数(SALT USING n PARTITIONS)设置是否合理,
    具体规则可参考http://blog.csdn.net/post_yuan/article/details/73167376 中建表之“主键/聚集键”及“分区”

  6. 通过4中的统计信息,判断是否存在表没有收集统计信息,如果没有,执行“UPDATE STATISTICS FOR TABLE table_name on every column [sample];”生成,统计信息对优化器选择正确的执行计划至关重要

  7. 通过EXPLAIN OPTIONS ‘s’ query_text判断SQL的执行计划是否正确,一般来说只要上述步骤完成,执行计划应该不会错误

  8. 上述步骤执行完成已经实现了第一步优化,如果依然不能满足需求,通过一边执行SQL一边查看SQL运行时统计信息定位问题,方法如下,
    a. su – trafodion;
    b. cd $MY_SQROOT/export/limited-support-tools/LSO/
    c. ./offender -s active,找到对应的query_id
    d. Sqlci; GET STATISTICS FOR QID query_id DEFAULT; 查看慢在哪一步

  9. 通过7中的统计信息,可以通过当前执行花费时间及处理记录数估算总耗时,如果不能满足需求,使用“CONTROL QUERY CANCEL QID query_id”取消正在执行的SQL,并重新优化

  10. 注:优化无止境,优化可以是一个迭代的过程,直到满足需求为止,迭代结束!

原创粉丝点击