跳到主要内容

PawSQL for OceanBase数据库:全面的性能优化解决方案

· 阅读需 6 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

OceanBase数据库作为国产自主可控的分布式数据库,凭借其高可用性、强一致性和高性能等特点,在金融、电商、政务等领域得到广泛应用。随着业务规模的扩大和数据量的激增,优化OceanBase数据库的查询性能变得愈发重要。PawSQL为OceanBase数据库提供了全方位的性能优化支持,助力用户充分发挥OceanBase数据库的性能潜力。

一、优化核心技术

PawSQL针对Oceanbase数据库,推出两大专项能力:

1. Oceanbase深度SQL语法支持

  • 双模式兼容:完整支持MySQL/Oracle语法体系

  • 完整解析OceanBase特有DDL语法:

    CREATE TABLE nation_d (
    n_nationkey INTEGER NOT NULL PRIMARY KEY,
    n_name CHAR(25) NOT NULL,
    n_regionkey INTEGER NOT NULL,
    n_comment VARCHAR(152)
    ) duplicate_scope = cluster/none;

    CREATE TABLE part (
    p_partkey int NOT NULL PRIMARY KEY,
    p_name VARCHAR(55) NOT NULL,
    p_mfgr CHAR(25) NOT NULL,
    p_brand CHAR(10) NOT NULL,
    p_type VARCHAR(25) NOT NULL,
    p_size NUMBER NOT NULL,
    p_container CHAR(10) NOT NULL,
    p_retailprice NUMBER(15,2) NOT NULL,
    p_comment VARCHAR(23)
    ) PARTITION BY HASH(p_partkey) PARTITIONS 16;

2. 规则体系升级

  • 新增三项分布式设计规范:

    • 避免表关联字段不是分布键
    • 分布式数据库的DML应避免表关联
    • 分布式数据库中DML操作没有分片字段的等值条件
  • 新增三项分布键设计规范

    • 分布式数据库不建议创建本地表
    • 分布键不建议使用多个字段
    • 分布键应使用区分度大的字段

    新增两项分布策略设计规范

    • 大表不建议使用复制(Replicated)分布
    • 分布方式建议使用hash分布

二、SQL全生命周期产品矩阵

2.1 开发测试阶段:智能SQL优化

PawSQL优化平台是一个面向应用开发和测试人员的一站式在线SQL优化工具,整合了业界关于关系数据库查询优化的最佳实践,通过查询重写优化、智能索引推荐,帮助应用开发人员及数据库管理人员一站式解决SQL性能问题。PawSQL优化平台已经完成了和常用IDE的集成,让开发人员不用离开开发环境即可进行SQL优化。

PawSQL优化平台是一款面向开发者和DBA的在线SQL优化工具,集成了业界领先的查询优化技术,包括:

  • 智能查询重写:自动优化低效SQL语句
  • 索引推荐引擎:精准推荐最优索引组合
  • 分布式优化策略:针对OceanBase的分布式特性,提供专属优化建议

2.2 代码集成阶段:智能SQL审核

PawSQL审核平台凭借其领先的核心技术,如自研SQL解析器、基于语法树的规则匹配和上下文信息更新,为SQL质量管理团队提供全面且精准(正确率超过95%)的智能SQL审核能力。它从语法规范、性能效率、安全性等多个维度进行全面检查,并提供针对性的优化建议,助力企业提升SQL性能和应用程序效率。

针对OceanBase数据库的分布式特性,PawSQL提供专门的分布式查询优化建议,其适用规则数据超过了190个。

审核规则数

2.3 运维阶段:性能巡检平台

PawSQL数据库性能巡检平台自动定期抓取数据库中产生的慢查询,并提供SQL优化建议,包括自动SQL重写、智能索引推荐、现有冗余索引分析等;自动定期对数据库中的对象进行巡检,识别可能的性能、安全性、可维护性等问题隐患,并提供优化建议。

oceanbase 巡检

三. 总结

PawSQL for OceanBase数据库为您提供一站式的性能优化解决方案。从日常查询优化到复杂的分布式场景处理,PawSQL都能助您轻松应对。🚀 立即体验PawSQL,释放OceanBase数据库的性能潜力!

PawSQL for Jetbrains, 一键完成SQL优化

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

💡 简介

PawSQL for Jetbrains(PawSQL Client) 是一款强大的 Jetbrains 插件,它将 PawSQL 引擎的智能 SQL 优化能力无缝集成到您的开发环境中,支持智能索引推荐、查询重写和自动化性能验证。通过与PawSQL Cloud(https://pawsql.com) 或企业私域部署的 PawSQL 优化平台配合使用,为开发者提供一键 SQL 性能优化的能力。

🎯 在IDEA/DataGrip里一键优化SQL

选择待优化的SQL文本,点击鼠标右键,选择在哪个工作空间进行SQL优化

图片

✨ 核心特性

  • 🚀 一键优化 - 智能分析并优化 SQL 查询性能
  • 📊 索引优化 - 智能推荐最优索引组合,全面提升查询效率
  • 🔄 查询重写 - 自动生成性能更优的等价 SQL 语句
  • 📈 性能验证 - 精确量化优化效果,提供详实的性能提升数据

🔧 安装指南

在线安装

  1. 启动 Jetbrains IDE工具(譬如 IDEA/DataGrip)
  2. 在Plugins中搜索 "PawSQL Client" 并安装

 Install from Jetbrains Marketplace

本地安装

  1. 在插件主页,选择合适的插件版本,点击下载到本地

插件下载

  1. 在插件管理页面点击本地安装

本地安装

⚙️ 首次配置

图片

  1. 在配置界面填写以下信息:
  • PawSQL Server 的后端地址(如:https://pawsql.com

  • 账号信息

  • 密码

  1. 点击保存完成配置

🌐 关于PawSQL

PawSQL专注于数据库性能优化自动化和智能化,提供的解决方案覆盖SQL开发、测试、运维的整个流程,广泛支持包括KingbaseES 在内的多种主流商用和开源数据库,为开发者和企业提供一站式的创新SQL优化解决方案。有效解决了数据库SQL性能及质量问题,提升了数据库系统的稳定性、应用性能和基础设施利用率,为企业节省了大量的运维成本和时间投入。

PawSQL架构

PawSQL for VSCode - 一键完成SQL优化

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

💡 简介

PawSQL for VSCode 是一款强大的 VSCode 插件,它将 PawSQL 引擎的智能 SQL 优化能力无缝集成到您的开发环境中,支持智能索引推荐、查询重写和自动化性能验证。通过与PawSQL Cloud(https://pawsql.com) 或企业私域部署的 PawSQL 优化平台配合使用,为开发者提供全方位的 SQL 性能优化解决方案。

🎯 在VSCode里一键优化SQL

方法1. 点击 SQL 语句上方的 "Optimize" 按钮,使用默认工作空间进行优化

方法2. 点击 "Optimize..." 按钮,从下拉菜单选择目标工作空间开始优化分析

图片

✨ 核心特性

  • 🚀 一键优化 - 智能分析并优化 SQL 查询性能
  • 📊 索引优化 - 智能推荐最优索引组合,全面提升查询效率
  • 🔄 查询重写 - 自动生成性能更优的等价 SQL 语句
  • 📈 性能验证 - 精确量化优化效果,提供详实的性能提升数据

🔧 安装指南

  1. 启动 Visual Studio Code
  2. 使用快捷键打开扩展市场:
  • Windows: Ctrl+Shift+X
  • macOS: Cmd+Shift+X
  • 搜索 "PawSQL" 并安装

⚙️ 首次配置

图片

  1. 点击 VS Code 左侧活动栏中的 PawSQL 图标
  2. 在配置界面填写以下信息:
  • PawSQL Server 地址(如:https://pawsql.com

  • 账号信息

  • 密码

  1. 点击保存完成配置

🌐 关于PawSQL

PawSQL专注于数据库性能优化自动化和智能化,提供的解决方案覆盖SQL开发、测试、运维的整个流程,广泛支持包括KingbaseES 在内的多种主流商用和开源数据库,为开发者和企业提供一站式的创新SQL优化解决方案。有效解决了数据库SQL性能及质量问题,提升了数据库系统的稳定性、应用性能和基础设施利用率,为企业节省了大量的运维成本和时间投入。

PawSQL架构

PawSQL for 达梦/KES:国产数据库全方位性能优化解决方案

· 阅读需 5 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

0. 概述

在国内信创的大背景下,金仓数据库KingbaseES和达梦数据库作为国内领先的自主可控数据库管理系统,在政府、金融、电信等关键领域扮演着举足轻重的角色。随着数据量的激增和业务复杂度的提升,国产数据库的SQL查询成为了确保业务流畅运行的关键。PawSQL,作为一款专业的数据库性能优化工具,覆盖SQL开发、测试、运维的整个流程,为金仓KingbaseES和达梦数据库提供了全面的优化支持,助力用户充分释放数据库的性能潜力。

1. 纳管数据库

工作空间是SQL优化的工作环境,PawSQL支持两种方式为金仓KES/达梦数据库创建SQL优化任务的工作空间:

离线 - DDL解析:通过解析数据库的DDL文件,构建工作空间。

在线 - 元数据获取:直接从KingbaseES 数据库中获取元数据,快速建立工作空间。

2. 可配置的SQL审查

PawSQL为金仓KES/达梦数据库的应用开发人员提供智能SQL审核功能,确保代码的准确性、效率、可读性、可维护性和安全性。

3. 丰富的查询重写优化

PawSQL提供基于启发式规则和基于代价的SQL重写优化算法,为KingbaseES 推荐语义上等价但性能更优的SQL。同时,提供重写前后的SQL文本对比,并高亮显示重写部分。

4. 智能索引推荐

PawSQL的智能索引推荐引擎为KingbaseES 上的应用查询提供最优索引策略,以适应各种SQL语法需求,显著提升查询效率。

5. 执行计划可视化(PPV)

PawSQL的执行计划可视化工具(PawSQL Plan Visualizer)支持对KingbaseES 的执行计划进行图示化展示和分析,帮助用户轻松理解查询的执行过程,快速定位性能瓶颈。

6. 性能验证

PawSQL自动采集SQL优化前后的KingbaseES 数据库的执行计划,获取优化前后的执行代价,确保推荐的优化建议能够真实提升数据库性能。

7. 慢查询自动采集和管理

PawSQL性能巡检平台支持对KingbaseES 的慢查询进行采集和管理,支持基于crontab的定时采集和手工采集。

8. 数据库对象巡检

PawSQL性能巡检平台支持对KingbaseES V8的数据库对象进行定时或手动巡检,覆盖表、列、字符集、索引、约束等各种数据库对象,以识别潜在的安全、性能等潜在问题,并给出警示。

🌟 总结

PawSQL for KingbaseES,金仓数据库的全方位SQL优化解决方案,无论是日常查询还是复杂数据处理,PawSQL都以专业、高效的解决方案,助力您的数据库性能提升。

🌐 关于PawSQL

PawSQL专注于数据库性能优化自动化和智能化,提供的解决方案覆盖SQL开发、测试、运维的整个流程,广泛支持包括KingbaseES 在内的多种主流商用和开源数据库,为开发者和企业提供一站式的创新SQL优化解决方案。有效解决了数据库SQL性能及质量问题,提升了数据库系统的稳定性、应用性能和基础设施利用率,为企业节省了大量的运维成本和时间投入。

PawSQL架构

SQL优化案例 - TPCH Q9 性能提升1195.14%

· 阅读需 5 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

引言

PawSQL对TPC-H基准的Query 9进行的自动性能优化后,Query9的性能提升了1195.14%。本文将根据PawSQL的优化过程,探讨其优化 SQL 性能的有效策略与实际效果。通过对比优化前后的查询结构、索引设计及执行计划,阐述如何实现显著的性能提升。

本文的案例可在线查看:https://pawsql.com/statement/1837384704875499522

TPC-H Query 9介绍:TPC-H 的第9个查询统计每个国家每年所有被订购零件的总利润。其查询特性如下:

  • 包含分组、排序、聚集操作
  • 存在多表连接和子查询
  • 使用了全匹配的LIKE 操作符

1️⃣ 查询重写优化

原始查询

SELECT profit.nation, profit.o_year, SUM(profit.amount) AS sum_profit
FROM (
SELECT nation.n_name AS nation, EXTRACT(YEAR FROM orders.o_orderdate) AS o_year,
lineitem.l_extendedprice * (1 - lineitem.l_discount) - partsupp.ps_supplycost * lineitem.l_quantity AS amount
FROM part, supplier, lineitem, partsupp, orders, nation
WHERE supplier.s_suppkey = lineitem.l_suppkey
AND partsupp.ps_suppkey = lineitem.l_suppkey
AND partsupp.ps_partkey = lineitem.l_partkey
AND part.p_partkey = lineitem.l_partkey
AND orders.o_orderkey = lineitem.l_orderkey
AND supplier.s_nationkey = nation.n_nationkey
AND part.p_name LIKE '%dim%'
) AS profit
GROUP BY profit.nation, profit.o_year
ORDER BY profit.nation, profit.o_year DESC;

优化后的查询:‍

SELECT profit_nation.n_name AS nation, EXTRACT(YEAR FROM profit_orders.o_orderdate) AS o_year,
SUM(profit_lineitem.l_extendedprice * (1 - profit_lineitem.l_discount) - profit_partsupp.ps_supplycost * profit_lineitem.l_quantity) AS sum_profit
FROM part AS profit_part, supplier AS profit_supplier,
lineitem AS profit_lineitem, partsupp AS profit_partsupp,
orders AS profit_orders, nation AS profit_nation
WHERE profit_supplier.s_suppkey = profit_lineitem.l_suppkey
AND profit_partsupp.ps_suppkey = profit_lineitem.l_suppkey
AND profit_partsupp.ps_partkey = profit_lineitem.l_partkey
AND profit_part.p_partkey = profit_lineitem.l_partkey
AND profit_orders.o_orderkey = profit_lineitem.l_orderkey
AND profit_supplier.s_nationkey = profit_nation.n_nationkey
AND profit_part.p_name LIKE '%dim%'
GROUP BY profit_nation.n_name, o_year
ORDER BY profit_nation.n_name, o_year DESC;

重写优化要点:

  • 消除子查询:将子查询的逻辑提升到主查询中,简化结构。
  • 表别名重命名:提高查询的可读性与可维护性。
  • 保持计算逻辑:确保查询的业务逻辑未发生变化。

2️⃣ 🔍索引优化策略

PawSQL 提出的索引优化方案:

CREATE INDEX PAWSQL_IDX0485218972 ON tpch.lineitem(L_PARTKEY, L_SUPPKEY, L_SHIPDATE);
CREATE INDEX PAWSQL_IDX0214365528 ON tpch.supplier(S_NATIONKEY, S_SUPPKEY, S_NAME, S_ADDRESS);
CREATE INDEX PAWSQL_IDX0327029402 ON tpch.part(P_NAME);

索引优化分析:

  • lineitem 表索引:针对连接条件和日期过滤的字段,减少 I/O 操作。
  • supplier 表索引:覆盖连接和查询字段,避免回表,提高检索效率。
  • part 表索引:通过 LIKE 操作符优化 p_name 的模糊匹配。

3️⃣ 执行计划对比

优化前的执行计划

  • 嵌套循环连接:广泛使用 Nested loop 连接,效率较低。
  • 全表扫描:对 lineitem 表进行全表扫描,涉及 60,175 行数据。
  • 依赖主键索引:主要依赖主键索引连接各表。

优化后的执行计划

  • 连接顺序优化:仍使用嵌套循环,但连接顺序优化。
  • 索引扫描:利用新创建的 PAWSQL_IDX0327029402 索引,扫描 part 表时,处理行数从 60,175 减少至 114。
  • lineitem 表精确查找:避免全表扫描,使用PAWSQL_IDX0485218972 进行精准匹配,进一步降低处理行数。

最终,处理的总行数从 60,175 降低到 3,513 行。

Image

4️⃣ 性能提升分析

  • 执行时间:从 260 毫秒减少到 20 毫秒。
  • 性能提升:达到 1195.14% 的提升。
  • 主要因素:索引优化显著改善了数据访问方式,减少了处理的行数。

🌐 关于PawSQL

PawSQL专注于数据库性能优化自动化和智能化,提供的解决方案覆盖SQL开发、测试、运维的整个流程,广泛支持包括KingbaseES 在内的多种主流商用和开源数据库,为开发者和企业提供一站式的创新SQL优化解决方案。有效解决了数据库SQL性能及质量问题,提升了数据库系统的稳定性、应用性能和基础设施利用率,为企业节省了大量的运维成本和时间投入。

PawSQL架构