PolarDB-X 1.0-用户指南—SQL调优指南—SQL调优基础概念

简介: 在使用PolarDB-X的过程中,可能出现性能不符合预期的慢SQL。SQL调优的过程,就是通过分析SQL的执行计划、各阶段运行时长等信息,找出导致SQL执行慢的原因,继而解决问题。

在使用PolarDB-X的过程中,可能出现性能不符合预期的慢SQL。SQL调优的过程,就是通过分析SQL的执行计划、各阶段运行时长等信息,找出导致SQL执行慢的原因,继而解决问题。

PolarDB-X架构

PolarDB-X是一个支持计算存储分离架构的数据库产品。当一条查询SQL(称为逻辑SQL)发往PolarDB-X节点时,PolarDB-X会将其分成可下推的、和不可下推的两部分,可下推的部分也被称为物理SQL。

custom import 1.png

原则上,PolarDB-X会:

  • 尽可能将用户SQL下推到MySQL上执行。
  • 对于无法下推的部分算子,选择最优的方式来执行。

下推和执行计划

EXPLAIN指令将会打印SQL的执行计划。它的用法非常简单:只要在SQL最前面加上EXPLAIN即可。下面通过几个例子来展示PolarDB-X的执行方式。

示例一:


> explain select c_custkey, c_name, c_address from customer where c_custkey = 42;
LogicalView(tables="customer_2", sql="SELECT `c_custkey`, `c_name`, `c_address` FROM `customer` AS `customer` WHERE (`c_custkey` = ?)")

对于带有主键条件的查询来说,PolarDB-X只要将SQL直接下发到主键对应的分片上即可。因此,执行计划中只有一个LogicalView算子,下发的物理SQL基本和逻辑SQL是一样的。

LogicalView算子代表下推到MySQL执行的查询,请参见执行计划和基本算子

示例二:


> explain select c_nationkey, count(*) from customer group by c_nationkey;
HashAgg(group="c_nationkey", count(*)="SUM(count(*))")
  Gather(concurrent=true)
    LogicalView(tables="customer_[0-7]", shardCount=8, sql="SELECT `c_nationkey`, COUNT(*) AS `count(*)` FROM `customer` AS `customer` GROUP BY `c_nationkey`")

上述查询会统计:各个国家的客户数量分别有多少?考虑到分库分表,可以将它分成两个阶段来进行:

  1. 在各个分表上进行COUNT(*)统计(这一步可被下推到MySQL上执行)。
  2. 将结果汇总,将COUNT(*)的结果执行SUM(),得到最终的结果(这一步需要PolarDB-X节点来完成)。

从执行计划上,也可以看出这一点。其中:

  • LogicalView表示下发到各个分片的SQL按nation分组进行 COUNT(*)统计。
  • Gather算子表示收集各个分片的结果。
  • HashAgg是聚合(Aggregate)的一种实现方式,以c_nationkey作为分组键将 COUNT(*)的结果求SUM()

更多的例子,详情请参见执行计划和基本算子

相关文章
|
SQL 数据库 开发者
MSSQL性能调优实战技巧:索引优化、SQL语句微调与并发控制策略
在Microsoft SQL Server(MSSQL)的管理与优化中,性能调优是一项复杂但至关重要的任务
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
812 1
|
SQL 运维 监控
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
|
SQL 监控 数据库
MSSQL性能调优实战策略:索引优化、SQL语句重构与并发控制
在Microsoft SQL Server(MSSQL)的管理和优化过程中,性能调优是确保数据库高效运行、满足业务需求的重要环节
|
SQL 运维 监控
MSSQL性能调优实战:索引优化、SQL查询效率提升与并发控制策略
在Microsoft SQL Server(MSSQL)的日常运维与性能优化中,精准的策略与技巧是实现高效数据库管理的关键
1115 3
|
SQL 监控 数据库
MSSQL性能调优实战技巧:索引优化策略、SQL查询重构与并发控制详解
在Microsoft SQL Server(MSSQL)的管理与优化过程中,性能调优是确保数据库高效运行的关键环节
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
SQL 监控 数据库
MSSQL性能调优实战指南:精准索引策略、SQL查询优化与高效并发控制
在Microsoft SQL Server(MSSQL)的性能调优过程中,精准索引策略、SQL查询优化以及高效并发控制是三大核心要素
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
2321 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)

热门文章

最新文章

相关产品

  • 云原生分布式数据库 PolarDB-X