您当前的位置:首页 > 电脑百科 > 数据库 > 百科

PawSQL Cloud实践指南

时间:2023-10-08 17:03:07  来源:  作者:PawSQL

PawSQL Cloud实践指南

概述

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创建工作空间

PawSQL Cloud实践指南

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

2、输入待优化SQL

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

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

PawSQL Cloud实践指南

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

3、创建查询优化

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

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

PawSQL Cloud实践指南

(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通过此选项来审查单表的索引数量,并进行警告提示。

PawSQL Cloud实践指南

(4)优化规则配置

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

PawSQL Cloud实践指南

优化结果解析

汇总结果展示

 内容包括

  • 优化概要
  • 推荐的索引
  • SQL优化列表

PawSQL Cloud实践指南

单SQL优化详情

  • 原始SQL

PawSQL Cloud实践指南

  • 重写优化
  • 重写后的SQL
  • 重写所应用的优化策略
  • 重写优化对应的SQL片段

PawSQL Cloud实践指南

  • 规则审查情况
  • 违反的审查规则
  • 违反规则的SQL片段

PawSQL Cloud实践指南

  • 索引推荐情况
  • 推荐的索引
  • 索引推荐的依据

PawSQL Cloud实践指南

  • 索引分析
  • 各个表上的索引列表,是否是冗余索引
  • 现有索引如何帮助此SQL
  • 单表索引个数超过阈值提示

PawSQL Cloud实践指南

  • 性能验证
  • 性能提升比
  • 验证生效的推荐索引
  • 优化之前的执行计划
  • 优化之后的执行计划

PawSQL Cloud实践指南

 

关于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优化服务。


Tags:PawSQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
PawSQL Cloud实践指南
概述PawSQL Cloud是PawSQL Advisor的SaaS版本,它整合了业界关于关系数据库查询优化最佳实践,通过查询重写优化、智能索引推荐,帮助应用开发人员及数据库管理人员一站式解决SQL...【详细内容】
2023-10-08  Search: PawSQL  点击:(369)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(26)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条