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调优的成本一般会比单机数据库高。

相关文章
|
监控 数据可视化 关系型数据库
PostgreSQL主备库搭建
pg主备库的搭建,首先需在2个节点安装pg软件,然后依次在2个节点配置主备。 本文采用os为CentOS7.6,pg版本使用14.2,以下为详细部署步骤。
1403 0
|
分布式计算 Java Hadoop
Hadoop垃圾回收机制
Hadoop垃圾回收机制
|
缓存 前端开发 JavaScript
浅浅阅读umi中InitialState插件源码 - 杨磊
InitialState插件源码的简要介绍
1277 0
浅浅阅读umi中InitialState插件源码 - 杨磊
|
监控 数据安全/隐私保护 Android开发
用最简单的方法下载微信视频号中的视频:微信视频号下载工具!
用最简单的方法下载微信视频号中的视频:微信视频号下载工具!
用最简单的方法下载微信视频号中的视频:微信视频号下载工具!
|
XML Java Android开发
Androistudio lint检查去除无效代码、无效资源
Androistudio lint检查去除无效代码、无效资源
523 0
|
移动开发 前端开发 JavaScript
原生 JS 手写一个优雅的图片预览功能,带你吃透背后原理
本文将用一个极简的例子详细讲解如何用原生JS一步步实现完整的图片预览和查看功能,无任何第三方依赖,兼容PC与H5,实现了触屏双指缩放等,干货满满。
原生 JS 手写一个优雅的图片预览功能,带你吃透背后原理
|
云安全 弹性计算 运维
混合云构架和场景|学习笔记
快速学习混合云构架和场景
混合云构架和场景|学习笔记
|
网络安全 API 开发工具
【Python】【应用】Python应用之玩转gerrit系列之一——搭建基础环境
【Python】【应用】Python应用之玩转gerrit系列之一——搭建基础环境
1201 0
【Python】【应用】Python应用之玩转gerrit系列之一——搭建基础环境
|
存储 关系型数据库 MySQL
Holo 使用场景说明
Holo 使用场景说明
|
缓存 前端开发 安全
SpringBoot 开发抖音开放平台获取用户的粉丝统计和短视频数据(二篇)
最近有朋友问起我有没有做过抖音开放平台,让我有了些思考,其实之前做过的。虽然抖音APP很火,但是毕竟不像微信开放平台那样,已沉淀多年,基本上每个API只要肯用心查找,网上都有很多资料可以参考。而抖音开放平台则不然,刚面世不久,资料比较少。即使对于一个开发人员来说,接入第三方接口都大同小异,不会太难,但我还是想把这些记录下来,特别是遇到的坑,会列在下面,一起参考学习。限于水平有限,若有错误,不吝赐教哈。那么,我们就开始正文吧。
1281 0
SpringBoot 开发抖音开放平台获取用户的粉丝统计和短视频数据(二篇)