0

SQL优化从未如此简单,PawSQL Cloud实践指南(新增Oracle/人大金仓数据库语法支持)

 11 months ago
source link: https://www.51cto.com/article/768892.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

SQL优化从未如此简单,PawSQL Cloud实践指南(新增Oracle/人大金仓数据库语法支持)

作者:PawSQL 2023-10-08 08:16:58
相比较PawSQL Advisor/Paw Index Advisor等基于IntelliJ的插件,PawSQL Cloud免安装,不依赖其他工具,不仅适合应用开发人员,也适合数据库管理人员等非开发人员使用;PawSQL Cloud同时能够记录您的优化历史,便于日后查看和跟踪,同时优化结果可以通过链接和同事共享。
79f4f2b24a24eb4ebd2181bff3a19353709724.png

PawSQL Cloud是PawSQL Advisor的SaaS版本,它整合了业界关于关系数据库查询优化最佳实践,通过查询重写优化、智能索引推荐,帮助应用开发人员及数据库管理人员一站式解决SQL性能问题。

相比较PawSQL Advisor/Paw Index Advisor等基于IntelliJ的插件,PawSQL Cloud免安装,不依赖其他工具,不仅适合应用开发人员,也适合数据库管理人员等非开发人员使用;PawSQL Cloud同时能够记录您的优化历史,便于日后查看和跟踪,同时优化结果可以通过链接和同事共享。

  • 基于规则的SQL审查,包括正确性审查和性能优化审查规则。
  • 丰富的重写优化,推荐语义等价,但执行效率更高的SQL。
  • 智能索引推荐,满足各种SQL语法组合的场景下,推荐最优的索引组合。
  • 基于代价的性能验证,确保基于SQL重写和索引推荐的新方案有着更好的性能。
  • 索引分析,定位冗余索引,节省系统资源。

支持数据库

PawSQL基于自研的SQL解析器,支持多种数据库类型以及SQL方言,当前支持的数据库列表如下,还在不断增加中...

  • MySQL 5.6及以上 (official)
  • PostgreSQL 9.1及以上 (official)
  • openGauss 1.0及以上 (official)
  • MariaDB 5.6及以上(alpha)
  • Oracle 11g及以上(alpha)
  • KingbaseES V8(alpha)

三步完成您的SQL优化

  • 选择/创建工作空间
  • 输入待优化SQL
  • 查询优化配置

1、选择/创建工作空间

工作空间是你进行SQL优化的上下文环境,一般包括数据表、视图、索引的定义及其上的一些统计信息.

PawSQL Cloud支持以下方式创建您的工作空间。

  • 通过数据库连接信息创建工作空间
  • 支持MySQL/PostgreSQL/openGauss/MariaDB/Oracle等数据库
  • 通过DDL文件创建工作空间
  • 通过手工输入DDL语句创建工作空间
  • 通过数据库dump出来的DDL创建工作空间
3433ab25073af5a74066386ac10e1f7ea5d640.jpg

提示: 对于每一种工作空间创建方式,PawSQL提供了在线指南帮您创建您的工作空间。

2、输入待优化SQL

待优化SQL是您进行查询优化的对象,它的来源可以是:

  • 数据库SQL日志。
  • 支持MySQL慢日志/通用日志,PostgreSQL的SQL日志,opengauss的SQL日志。
  • 文本文件;SQL语句间以;分割。
  • SQL文本;SQL语句间以;分割。
51a4e6069d0fe9efdf9418986f0f355ce81343.jpg

提示: 同样的,您可以看到PawSQL提供了在线指南帮您获取待优化的SQL。

3、创建查询优化

查询优化表示在您的工作空间内对一组SQL查询进行的性能优化诊断,一般包括SQL审查、重写优化、索引推荐等。

用户可以对优化任务输入、输出、数据源以及执行过程的配置。

图片

(1)基础配置

  • 优化ID:标识您本次优化的ID
  • 是否仅索引推荐:此选项控制是否启用重写优化,在SQL已经上线的情况下,修改SQL可能无法立即实施,在此情况下,可以禁用此选项;PawSQL将不会重写您的SQL,只是基于原SQL进行索引推荐。

(2)优化验证

  • 是否更新DDL信息,是否连接到验证数据库获取最新的DDL信息。
  • 是否启用What-If性能验证,此选项控制是否对推荐的优化建议进行性能验证,如果启用此选项,PawSQL在优化详情中会提供SQL优化前后的执行计划及代价信息,从而确保推荐的优化建议(重写优化及索引推荐)能够真实提升数据库性能。
  • 性能验证时是否启用Analyze,如果启用此选项,则在进行What-If性能验证时获取SQL的真实解析及执行时间,避免了MySQL对中间结果表explain的缺陷,代价估算更加精确。

注意:最后两个性能验证的选项应避免在生产库上使用,因为对于没有内置what-if(内置虚拟索引)的数据库(MySQL/Postgres皆是)来说,性能验证是通过创建推荐索引并进行explain分析执行计划,然后删除推荐索引的方式来做的。这个过程在生产库上会消耗一定的资源,且执行时间可能会比较长,可能对生产库上的业务运行产生影响。

(3)索引推荐配置

  • 是否和现有索引去重,此选项表示推荐索引时,是否和现有索引去重。
    启用此选项的场景是不考虑删除现有的索引,因为输入的SQL只是并不能代表这个数据库上所有的SQL场景,所以只考虑新增对输入SQL有帮助的索引。如果能够确保输入的SQL包含此数据库所有的查询,那么只保留推荐的索引就可以了,这种情况下可以不选择此选项,并且使用新推荐的索引代替现有的索引。
  • 是否推荐覆盖索引,此选项表示推荐索引时是否考虑覆盖索引策略。
    覆盖索引可以让查询只访问索引而不需要访问数据表(请参考《高效索引的准则》),在一些场景下,覆盖索引能够大幅提示查询性能。但是覆盖索引会包含查询条件中没有使用的列,从而增加索引所占的磁盘空间大小。
  • 覆盖索引的最大列数,此项设置表示在进行覆盖索引推荐时,索引的最大列数限制。如以上所述,覆盖索引会包含查询条件中没有使用的列,从而增加索引所占的磁盘空间大小。此选项可以控制覆盖索引所占空间的大小,让PawSQL能够为用户提供一定空间限制的情况下利用覆盖索引的非回表特性。
  • 索引的最大列数,此选项限制索引的最大列数,索引会占用一定的磁盘空间,且太多列的索引会让索引树的层级加深,从而增加索引访问的代价。用户可以通过此项设置控制索引的最大列数。
  • 单表最大索引数目,如《高效索引的准则》中所述,索引不是免费的午餐,它会占用磁盘空间,并对对DML操作产生负面影响,因为对于数据库管理器写入表的每一行,它还必须更新任何受影响的索引。因此,PawSQL通过此选项来审查单表的索引数量,并进行警告提示。
图片

(4)优化规则配置

  • 是否启用该优化规则,以及修改相应阈值
图片

优化结果解析

汇总结果展示

  • 推荐的索引
  • SQL优化列表
图片

单SQL优化详情

  • 原始SQL
图片
  • 重写后的SQL
  • 重写所应用的优化策略
  • 重写优化对应的SQL片段
图片
  • 规则审查情况
  • 违反的审查规则
  • 违反规则的SQL片段
图片
  • 索引推荐情况
  • 推荐的索引
  • 索引推荐的依据
图片
  • 各个表上的索引列表,是否是冗余索引
  • 现有索引如何帮助此SQL
  • 单表索引个数超过阈值提示
图片
  • 性能提升比
  • 验证生效的推荐索引
  • 优化之前的执行计划
  • 优化之后的执行计划
图片

关于PawSQL

PawSQL专注数据库性能优化的自动化和智能化,支持MySQL,PostgreSQL,Opengauss,Oracle(alpha), MariaDB(alpha)等,提供的SQL优化产品包括:

  • PawSQL Cloud,在线自动化SQL优化工具,支持SQL审查,智能查询重写、基于代价的索引推荐,适用于数据库管理员及数据应用开发人员,
  • PawSQL Advisor,JetBrain的DataGrip、IDEA等IDE的插件, 适用于数据应用开发人员,可以IDEA/DataGrip的应用市场通过名称搜索“PawSQL Advisor”安装。
  • PawSQL Engine, 是PawSQL系列产品的后端优化引擎,可以以docker镜像的方式独立安装部署,并通过http/json的接口提供SQL优化服务。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK