当前位置: 首页 > news >正文

OceanBase SQL 诊断和调优实践——【DBA从入门到实践】第七期

数据库作为绝大多数应用系统储存数据的核心系统,在用户系统需要访问数据时,有着至关重要的作用。在这些交互中,SQL 语言是应用与数据库系统之间“沟通”的桥梁,它负责将应用的指令传达给数据库。因此,SQL 的性能好坏直接决定了这种“沟通”的效率,进而对系统的用户响应时间、系统吞吐量以及IT设置成本等关键指标产生影响。

那么,什么是 SQL 诊断与调优?

SQL 诊断就是通过一些技术手段来找出“沟通”效率不高的原因或潜在影响“沟通”效率的因素,比如发现执行性能不佳的 SQL、可能存在性能瓶颈的 SQL 等。而 SQL 调优则是通过一系列的技术手段,来提高 SQL 的执行效率,解决 SQL 的性能瓶颈,从而达到提高应用与数据库“沟通”效率的目的。

《DBA 从入门到实践》第七期将在5月22日(周三)如期而至,为大家讲解:

  • ODP(OceanBase Database Proxy) SQL 路由原理。
  • 如何分析 SQL 监控视图。
  • 如何阅读和管理 OceanBase SQL 执行计划。
  • 最常见的 SQL 调优方式。
  • SQL 性能问题的典型场景和排查思路。

点击下方链接报名学习

【DBA从入门到实践】第七期

内容抢“鲜”知

(一)ODP 路由原理

路由是 OceanBase 分布式数据库中的一个重要功能,是分布式架构下,实现快速访问数据的利器。

Partition 是 OceanBase 数据存储的基本单元。当我们创建一张 Table 时,就会存在表和 Partition 的映射。非分区表中,不考虑主备时,一张 Table 对应一个 Partition;分区表中一个 Table 会对应多个 Partition。

路由实现了根据 OBServer 的数据分布精准访问到数据所在的机器,还可以根据一定的策略将一致性要求不高的读请求发送给副本机器,充分利用机器的资源。路由选择输入的是用户的 SQL、用户配置规则、OBServer 状态,路由选择输出的是一个可用 OBServer 地址。

其路由实现逻辑如下图所示:

1715853371

(二)分析 SQL 监控视图

OceanBase 数据库 V4.x 版本中有着非常丰富的视图,通过这些视图可以获取 OceanBase 集群各种数据库对象的基本信息和实时状态信息。这些视图分为两大类:数据字典视图和动态性能视图。

丰富的视图展示了 OceanBase 数据库的内部架构及系统运行的详细状态。通过视图,我们可以便捷地查看 OceanBase 数据库的系统组成及实时状态,了解组件之间的关系,内部视图是学习 OceanBase 数据库的最好途径之一,其相应的数据字典视图见下图。

1715853382

监控指标相关的数据来源于 OceanBase 数据库内部的动态性能视图,所有监控指标都可以通过 SQL 语句进行访问。动态性能视图分为 GV$ 视图和 V$ 视图,外部监控系统(例如 OCP)通过在每个数据库服务器上部署代理进程,通过 SQL 接口定期拉取本机上的监控信息(V$ 视图),部分全局信息(例如 Root Service 相关)通过中心节点采集。监控数据统一汇报给监控系统数据库,并按照各种维度聚合(集群维度、租户维度、节点维度、Unit 维度),从而构建整个监控大盘。

(三)如何阅读和管理 OceanBase SQL 执行计划

执行计划(Execution Plan)是对一条 SQL 查询语句在数据库中执行过程的描述。用户可以通过 EXPLAIN 命令查看优化器针对指定 SQL 生成的逻辑执行计划。如果要分析某条 SQL 的性能问题,通常需要先查看 SQL 的执行计划,排查每一步 SQL 执行是否存在问题。因此,读懂执行计划是 SQL 优化的先决条件,而了解执行计划的算子是理解 EXPLAIN 命令的关键。

(四)最常见的 SQL 调优方式

当用户已经学习完如何通过 EXPLAIN 命令查看优化器针对 SQL 生成的逻辑执行计划,以及如何通过 Hint 和 Outline 来人为控制优化器的行为,使优化器生成指定的计划。就可以以上述内容为基础,继续了解 OceanBase SQL 性能调优中最基础的内容:第一部分是统计信息和计划缓存的介绍,第二部分是 OceanBase 数据库的使用者需要了解的几种性能调优手段。

(五)SQL 性能问题的典型场景和排查思路

当用户完成了如何阅读和管理 SQL 的执行计划,以及常见的几种 SQL 调优方式,就获得了学习这一小节的基础知识。当用户遇到由于 SQL 原因导致的性能问题时,一般可以通过以下几个步骤进行排查:

  1. 通过全链路追踪确认各阶段耗时占比,确认耗时长的阶段是什么?
  2. 如果上一步显示慢在 observer 模块,则可以通过 oceanbase.gv$ob_sql_audit 分析具体是 observer 内的什么阶段耗时长了?
  3. 如果上一步耗时长的阶段在执行阶段,则先根据上文的内容判断是否存在 buffer 表、大小账号、硬解析等问题?
  4. 如果上述问题均不存在,则需要通过 explain extended 展示的执行计划来分析优化器的估行和真实行数是否有巨大差距,如果有明显差距,则需要手动收集统计信息。否则就进一步考虑是需要创建更合适的索引、通过 hint 调整计划形态、通过 hint 调整并行度等。

在该小节中,首先会为大家展示上面排查步骤中提到的几个常被用于进行 SQL 性能问题分析的工具,然后介绍如何通过这几个工具找到 SQL 性能优化的方向,最后会对 SQL 调优的最典型的场景和常见问题进行一个汇总。 

更多精彩内容请锁定5月22日《DBA从入门到实践》第七期~

相关文章:

OceanBase SQL 诊断和调优实践——【DBA从入门到实践】第七期

数据库作为绝大多数应用系统储存数据的核心系统,在用户系统需要访问数据时,有着至关重要的作用。在这些交互中,SQL 语言是应用与数据库系统之间“沟通”的桥梁,它负责将应用的指令传达给数据库。因此,SQL 的性能好坏直…...

C++之std::is_trivially_copyable(平凡可复制类型检测)

目录 1.C基础回顾 1.1.平凡类型 1.2.平凡可复制类型 1.3.标准布局类型 2.std::is_trivially_copyable 2.1.定义 2.2.使用 2.3.总结 1.C基础回顾 在C11中,平凡类型(Trivial Type)、平凡可复制类型(TrivialCopyable&#x…...

宝石收集,tarjan

0宝石收集 - 蓝桥云课 (lanqiao.cn) nint(input()) s0input() mint(input()) mp[[] for i in range(n1)] for i in range(m):a,bmap(int,input().split())a1b1mp[a].append(b)import sys sys.setrecursionlimit(100000000) dfn[0 for i in range(n1)] low[0 for i in range(n1…...

python 面对对象 类 继承

继承 继承就是为了解决两个有大量重复性代码的类,抽象出一个更抽象的类放公共代码,主要是代码复用,方便代码的管理与修改 类的继承包括属性和方法,私有属性也可继承 class Person(): # 默认是继承object超类pass…...

Rust腐蚀怎么用服务器一键开服联机教程

1、进入控制面板 首次登陆需要点击下方重置密码,如何再点击登录面板,点击后会跳转到登录页面,输入用户名和密码登录即可 2、设置游戏端口 由于腐蚀的设置需要三个端口,它们用于游戏端口(必须为首选端口)&a…...

公共代理IP和独享代理IP之间的区别?

公共代理IP和独享代理IP在网络应用中扮演着不同的角色,它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同,公共代理IP,顾名思义&#xff0…...

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步,前端开发面临越来越多的挑战,其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时,往往显得…...

淘宝订单系统ERP中如何接入平台订单信息?(订单API)

淘宝开放平台中有交易API,里面有各种关于交易的API接口。但是申报应用权限的审核流程严格又漫长。不少公司费时费力的申请后,结果还是没有审批下来。 调用淘宝自定义接口custom,可以实现淘宝开放平台API的调用。技术人员会根据您需要的接口做…...

在Spring Boot项目中集成和使用MQTT

在物联网(IoT)应用中,MQTT(消息队列遥测传输)协议因其轻量级和高效性被广泛使用。在Spring Boot项目中,我们可以通过集成org.springframework.integration:spring-integration-mqtt依赖来实现对MQTT的支持。…...

14、设计模式之访问者模式

访问者模式 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元…...

Excel如何换行不换格

在换行的字之间 按住Alt 回车...

Elasticsearch 8.1官网文档梳理 - 十五、Aggregations(聚合)

Aggregations ES 的聚合可以总结为三类:指标聚合、统计聚合、其他分析聚合。 Metric aggregations: 计算 field 的指标值,例如平均值、最大值、和等指标Bucket aggregations: 基于 field 的值、范围、或其他标准对 doc 分类&…...

计算机系统概论

目录 1. 计算机的分类 2. 计算机的发展简史 3. 计算机的硬件 1. 处理器(CPU) 2. 内存(Memory) 3. 存储设备 4. 输入输出设备 4. 计算机的软件 1. 软件的分类 1.1 系统软件 1.2 应用软件 2. 软件的特点 3. 软件开发 4…...

【Vue】diff 算法

diff的时机 当组件创建时,以及依赖的属性或数据变化时,会运行一个函数,该函数会做两件事: 运行_render生成一棵新的虚拟dom树(vnode tree),返回根节点运行_update,传入虚拟dom树的根节点,对新旧…...

Spring Boot 3.x 与 Spring Boot 2.x 的对比

Spring Boot 是 Java 开发领域的一个重要框架,它简化了基于 Spring 的应用开发。随着版本的不断更新,Spring Boot 提供了更多功能、更好的性能以及更简洁的配置。本文将详细对比 Spring Boot 3.x 和 Spring Boot 2.x,探讨它们之间的主要区别和…...

SSLError ClosedPoolError

分析日志 从您提供的日志文件内容来看,存在几个明显的问题导致了实例无法创建: SSL证书验证失败:日志中多次出现SSLError(SSLError(1, [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)),)错误。这表明客户端在尝试…...

勒索软件分析_Conti

0. Conti介绍 勒索软件即服务(Ransomware as a Service,RaaS)变体 Conti 推出还不到两年,已经进行了第七次迭代。Conti被证明是一种敏捷而熟练的恶意软件威胁,能够自主和引导操作,并具有无与伦比的加密速度…...

Linux系统如何通过编译方式安装python3.11.3

1.切换到/data 目录 cd /data 2.下载python源码Python-3.11.3.tgz wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz tar -xzf Python-3.11.0.tgz cd Python-3.11.3 3.配置python的安装路径 和 执行openssl的路径 ./configure --prefix/usr/local/pyth…...

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…...

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交、142.环形链表II

24. 两两交换链表中的节点 题目链接: 24. 两两交换链表中的节点 文档讲解:代码随想录 状态:没做出来,没有正确更新头节点,因为head和cur共享引用,会随着cur的移动,丢失之前存放的节点 错误代码&…...

百度网盘下载速度太慢?Python脚本帮你获取高速直链

百度网盘下载速度太慢?Python脚本帮你获取高速直链 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的下载速度而苦恼吗?想要摆脱客…...

AngularJS 控制器详解

AngularJS 控制器详解 引言 AngularJS 是一个用于构建动态网页的框架,它允许开发者使用 HTML 作为模板语言,通过指令扩展 HTML 的功能。在 AngularJS 中,控制器是核心组件之一,它负责管理视图和模型之间的交互。本文将详细介绍 AngularJS 控制器的概念、作用、创建方法以…...

基于动态生物标志物变化率的生物年龄预测:LightGBM模型与纵向数据分析实践

1. 项目概述与核心价值在预防医学和健康管理领域,我们常常面临一个根本性的难题:如何准确评估一个人的“真实”衰老程度?我们都知道,身份证上的“时序年龄”只是一个粗略的刻度,两个同龄人,一个可能精力充沛…...

IDM-GPT:基于大语言模型的智能体协作框架如何革新交通数据分析

1. 项目概述:当大语言模型遇上城市交通如果你在交通规划部门或者智慧城市相关的科技公司工作,每天面对的可能就是海量的交通传感器数据——每分钟都在更新的车流量、速度、占有率,来自成千上万个埋设在道路下的环形线圈检测器。这些数据是城市…...

Armv9 SME架构FMOP4A指令:混合精度矩阵运算优化

1. SME架构与FMOP4A指令概述 在现代处理器架构中,矩阵运算性能直接决定了AI推理和科学计算的效率。Armv9引入的SME(Scalable Matrix Extension)架构通过ZA瓦片寄存器和专用矩阵指令集,为浮点密集型计算提供了硬件级加速方案。其中…...

从背包UI到聊天框:详解Unity ScrollRect在不同游戏场景下的实战应用与优化

从背包UI到聊天框:Unity ScrollRect全场景实战指南在RPG游戏的背包界面滑动查看装备,在社交系统中翻阅聊天记录,或是横向浏览角色画廊——这些看似不同的交互背后,都依赖同一个核心组件:Unity的ScrollRect。作为UGUI体…...

Mac上mitmproxy HTTPS抓包实战:证书配置与Python脚本化

1. 为什么Mac用户需要真正掌握mitmproxy,而不是只装个Charles? 在Mac上做移动端或Web前端调试时,很多人第一反应是打开Charles——界面友好、点几下就能看到HTTP请求。但真正在一线做过API联调、小程序逆向、自动化测试或安全审计的人心里都清…...

OpenClaw强势推出V2026.5.20版本地部署最新教程来啦!3分钟一键安装中文版可视化操作指南

凌晨两点,我刚把 OpenClaw 跑通。看着屏幕上终于亮起来的 WebChat 界面,心里那叫一个舒坦。说实话,之前装了几次都没成功,不是端口冲突就是 API Key 配置不对,折腾了大半天。后来静下心来把文档从头到尾看了一遍&#…...

CentOS 7服务器管理员的福音:手把手配置fbterm终端,实现中英文无缝切换

CentOS 7终端双语解决方案:fbterm配置全指南与实战技巧对于长期工作在命令行界面的系统管理员来说,中英文环境切换是个高频痛点。英文系统能确保软件兼容性和命令执行稳定性,但面对中文日志、文档时又需要可靠的显示支持。这种矛盾在CentOS 7…...

Qt6.5数控加工CAM框架实战:基于工厂模式与分层架构的CamCore完整实现

文章简介 本文基于Qt Creator 14.0.1、Qt6.5 LTS、CMake、C17,搭建一套轻量化数控加工CAM核心框架CamCore。采用工序、算法、UI界面一一映射的分层架构,结合工厂模式、多态继承、枚举参数管控设计,具备参数管理、工艺模板复用能力&#xff0…...