SQL调优指南—调优基本概念

简介: 分布式数据库相对单机数据库架构有差异,所有在单机数据库的调优经验上分布式数据库又有着自身特点的调优手段。在使用PolarDB-X的过程中,我们会基于统计信息、执行计划和并发策略和执行之后反馈的运行时长等信息,找出导致SQL执行慢的原因,针对性调优。

基本架构

PolarDB-X是一款计算存储分离的分布式数据库产品。当一条查询SQL(称为逻辑SQL)发往PolarDB-X计算节点(CN)时,PolarDB-X会将其分成可下推的、和不可下推的两部分,可下推的部分也被称为物理SQL。不可下推的SQL在CN上执行,下推的SQL在DN上执行。222.png

原则上,PolarDB-X在查询优化过程中尽可能按照以下规则做执行优化:

  • 尽可能将用户SQL下推到DN上执行,除了可以避免CN和DN建数据网络交互以外,还可以充分利用多分片并发执行的能力,利用各个DN资源,加速查询。
  • 对于无法下推的部分算子,优化器会选择最优的方式来执行,比如选择合适的算子执行、选择合适的并行度策略以及是否使用mpp执行。

除此之外,在执行优化过程中会考虑尽可能选择最佳索引。

基本概念

在SQL调优过程中我们还需要理解下列概念:

  • 逻辑SQL: 用户侧发起的查询SQL;
  • 物理SQL:SQL经过查询优化后,一般会拆分为可下推和不可下推的SQL,其中可下推的SQL是发往DN执行的,叫物理SQL。如果逻辑SQL被全部下推到DN执行,那么物理SQL等价于逻辑SQL。
  • 并行度: 指查询过程中数据并行执行的最大数目,对于CN来说就是利用多核能力多线程计算,对DN来说就是同时执行多个下推物理SQL的并行数。
  • 执行计划:逻辑SQL发送到CN节点,会经过解析优化生成可执行的计划树,计划树的每个节点代表是算子。一条可以通过执行计划初步断定查询的快慢,比如是否命中索引、算子选择是否合适等。
  • 索引:PolarDB-X一般分为局部索引和全局索引,局部索引指的是单个DN节点的索引(MYSQL索引),全局索引是指构建在多个DN上的分布式索引。选择合适的索引,可以大大提高PolarDB-X的检索速度。

一条慢查询可能和物理SQL执行快慢、并发度数量、执行计划和索引选择是否合适都有关系。所以在分布式数据库中,SQL调优的成本一般会比单机数据库高。

相关文章
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
1721 3
|
NoSQL Linux 测试技术
redis的安装步骤及前台,后台redis服务启动
这篇文章介绍了Redis的安装步骤,包括在Linux系统中下载、传输、解压、编译、安装Redis,以及Redis服务的前台和后台启动方法。
redis的安装步骤及前台,后台redis服务启动
|
存储 机器学习/深度学习 算法
Python科学计算库SciPy
SciPy是一个开源的Python科学计算库,提供了一组丰富的数学、科学和工程计算功能。它建立在NumPy之上,与NumPy密切集成,为用户提供了更高级的功能和工具。 SciPy库包含了许多模块,每个模块都专注于特定领域的计算任务。下面是一些常用的SciPy模块及其功能:
|
存储 人工智能 自然语言处理
AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
【7月更文挑战第2天】AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
|
算法 C++
双指针算法·两数之和·三数之和
双指针算法·两数之和·三数之和
236 0
|
存储 编译器 C语言
【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)
目录 C语言中六种位运算符: 一、位移运算符 1、移位运算符简介 2、先要了解一点 3、 << 左移运算符 4、>>右移运算符 5、警告 二、 1、& 按位与 2、| 按位或 3、^ 按位异或
572 0
【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)
|
机器学习/深度学习 并行计算 算法
全手写resnet50,分分钟识别“十二生肖“图片
全手写resnet50神经网络,终于运行正常了。
|
Devops
|
SQL 存储 关系型数据库
面试突击:MVCC 和间隙锁有什么区别?
MVCC 和间隙锁是两种完全不同的机制,但它们的目的都是相同的,都是用来保证数据库并发访问的,我们先来看二者的定义。
280 0