#SQL调优原理与规则

YashanDB优化器内部存在较多的优化细节,其中,以下优化原理和规则是在进行SQL调优之前应该了解的:

  • 查询改写与谓词优化
  • 选择率与统计信息

通常情况下,优化器能做出最优的选择,但由于语句本身等一些原因没有生成最优计划时,需要进行SQL级的调优,通用的SQL调优方法包括:

  • 改写SQL

    对于初学者,SQL可以被简单地理解为一种消息传递的语言——文本查询、数据返回。但如果不去深入理解和运用这门语言,可能会导致客户端经常会产生一些低效的SQL。

    开发人员编写SQL语句用于向数据库发出请求,获得结果集,数据库端响应SQL并执行,对于产生相同结果的两条不同写法的SQL,其响应时间可能相差几个数量级。

    当SQL运行出现性能问题时,调优人员应该首先排查该语句编写的是否合理,例如是否未使用绑定变量而直接使用常量(这将导致SQL执行计划无法被重用,而出现耗费资源的硬解析)。通过改写SQL实现性能提升是数据库性能调优中的重要一环。

  • Hint调优

    在SQL本身已改写达到要求,而SQL执行效率仍不理想时,可能需要对优化器进行干预,让其生成符合预期的执行计划。

    YashanDB中,用户可以通过指定Hint的方式来改变优化器对计划的选择。但在CBO模式下,优化器有时会忽略它认为不合理的hint,此时需要在知晓优化器工作原理的基础上进行分析,调整hint。

    统计信息是优化器工作的基准,对于用户调优而言,了解SQL语句所涉及表的数据信息、业务逻辑、关联关系等情况则是做出合理hint选择的基本要求。

  • 计划记录

    在使用hint对计划进行调优之后,可以通过Outline的方式对计划进行记录。在下次遇到相同的执行语句时,可以直接获取稳定的执行计划。

pdf-btn 下载文档
copy-btn 复制链接