GaussDB SQL调优:选择合适的分布列

news2025/7/15 22:52:27

一、背景

GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。

 

二、将会学到什么

在这个Codelabs中,您将体验GaussDB通过选择合适的分布列来达到性能调优的实际案例。

三、SQL调优指南

SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘IO、网络IO四种资源利用最大化。所有调优手段都是围绕资源使用开展的。所谓资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。

1、选择合适的分布列

a.现象描述

表定义如下:

CREATE TABLE t1 (a int, b int);
CREATE TABLE t2 (a int, b int);

执行如下查询: 

SELECT * FROM t1, t2 WHERE t1.a = t2.b;

 

b.优化分析

如果将a作为t1和t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (a);

则执行计划将存在“Streaming”,导致DN之间存在较大通信数据量,如图1所示。

如果将a作为t1的分布列,将b作为t2的分布列:

CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a);
CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (b);

则执行计划将不包含“Streaming”,减少DN之间存在的通信数据量,从而提升查询性能,如图2所示。 

 

祝贺您,您已经成功地完成了GasssDB通过选择合适的分布列来达到性能调优全流程体验。 

 

总结


GaussDB同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。

GaussDB分布式形态整体架构如下:

欢迎大家交流~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OSI参考模型和TCP/IP网络参考模型

1、OSI参考模型 1.1 产生背景 为了解决网络之间的兼容性问题,实现网络设备间的相互通讯,国际标准化组织ISO于1984年提出了OSIRM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI参考模型很快成为计算机网络通信的基础模型。由于种种原因,并没有…

React回顾

一、基础 1、使用babel解析 2、不直接使用jsx,jsx写起来很繁琐 3、jsx语法规则 4、函数式组件的使用 5、函数式组件渲染 6、类组件渲染 7、类组件中事件调用this指向问题 8、类组件不能直接改变状态 9、props接收数据类型限制 类型限制放到类组件内部,用…

OSCP靶场--Algernon

OSCP靶场–Algernon 考点: 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.243.65 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-26 21:17 EST Nmap scan report for 192.168.243.65 Host is up (0.30s latency). No…

PyTorch概述(八)---ADAM

import torch torch.optim.Adam(params,lr0.001,betas(0.9,0.999),eps1e-8,weight_decay0,amsgradFalse,*,foreachNone,maximizeFalse,capturableFalse,differentiableFalse,fusedNone) 类torch.optim.Adam实现Adam算法 Adam算法描述 输入:初始化:for t1 to ...do if maximi…

基于AI将普通RGB图像转换为苹果Vision Pro支持的空间照片

将 RGB 图像转换为空间图片 一、引言 随着AR和VR技术的普及,空间照片格式(.HEIC)逐渐受到关注。这种格式允许用户在AR/VR设备上体验到更为真实的立体空间效果。为了让更多的普通图片也能享受这种技术,我们开发了这款可以将普通RGB图像转换为苹果Vision Pro支持的.HEIC格式的…

前后端分离nodejs+vue高校教材征订系统47nia

本教材管理网站是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了学生、教师和管理员这三者的需求。操作简单易懂,合理分析各个模块的功能,尽可能优化…

petalinux-config : command not found 和petalinux-build: command not found

发现这两个问题都是因为:没有先设置 petalinux 的作环境 先输入命令 先执行 source /opt/pkg/petalinux/2020.2/settings.sh 或者 sptl 然后切换目录,到相应的目录,就可以了

QSpace Pro 一款简洁高效的多窗格文件管理器,灵活且实用!

在日常的工作和生活中,文件管理是不可或缺的一环。尤其是对于我们这些依赖于数字工具的现代人来说,一个高效、便捷且功能强大的文件管理器能大大提升我们的效率。最近,我有幸试用了一款名为QSpace的多窗格文件管理器,它给我留下了…

嵌入式驱动学习第一周——git的使用

前言 本文主要介绍git的使用,包括介绍git,gitee,以及使用gitee创建仓库并托管代码 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏&#xf…

Unity将4个纹理图拼接成1个纹理

需要的效果 最终实现的效果大概如下: 4个贴图上去 这里随便放一个切分的图。 Shader代码如下 直接上代码: // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)// Unlit shader. Simplest possible textured shad…

打包Docker镜像时候,ARG标签如何使用?

FROM registry.cn-qingdao.aliyuncs.com/dataease/fabric8-java-alpine-openjdk8-jre:edge-chromium-11这里这个标签如何使用 ARG IMAGE_TAGRUN mkdir -p /opt/apps /opt/dataease/data/feature/full /opt/dataease/drivers /opt/dataease/plugins/defaultADD core/mapFiles/fu…

Python分支和循环结构及其应用(文末送书)

一、分支结构 应用场景 我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题。 if语句的使用 在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的…

vue.config.js publicPath 和 vue-router base 结合配置项目根目录为二级目录案例

背景: 同个域名下需要有 PC 管理后台, H5 端, 企业微信 ......等多个端, 需要在一个域名下通过不同的路径来区分不同的项目; 例如: abc.com/pc, abc.com/h5, abc.com/wx-work.... 此处做个记录 步骤: 1. 修改 vue.config.js 中的 publicPath module.exports {outputDir:…

SpringCache缓存专题

SpringCache缓存专题 学习目标 1、理解缓存存在的意义 2、掌握redis与SpringCache的集成方式 3、掌握SpringCache注解的使用 4、掌握项目集成SpringCache流程 第一章 基于SpringCache缓存方案 1.为什么需要缓存 ​ 前台请求,后台先从缓存中取数据&#xff0…

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12)

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12) 介绍算法公式 代码rolling函数介绍核心代码计算 CHO 完整代码 介绍 CHO(济坚指数)是一种在金融领域中用于衡量市场波动性和风险的指数 先…

WebFilter【通过过滤器实现登录判断】

WebFilter【通过过滤器实现登录判断】 /*** 检查用户是否已经完成登录*/ WebFilter(filterName "loginCheckFilter",urlPatterns "/*") Slf4j public class LoginCheckFilter implements Filter{//路径匹配器,支持通配符public static final …

Linux系统---nginx(1)服务

目录 一.Nginx概述 1.定义 2.Nginx模块作用 (1)main模块 (2)stream服务模块 (3)邮件服务模块 (4)第三方模块 (5)events模块 (6&#xff0…

前端路由与后端路由的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

开源免费的源码阅读神器 Sourcetrail,高效阅读python,pytorch等深度学习框架代码

开源免费的源码阅读神器 Sourcetrail 目前支持 C、C、Python 和 Java 语言,同时提供了相关 SDK 用于拓展支持其它语言,相信在未来会提供更多语言的支持。 官网地址: https://www.sourcetrail.com/ 目前已经开源: https://gith…

【计算机网络】DNS/ICMP协议/NAT技术

文章目录 一、DNS(Domain Name System)1.DNS背景2.域名3.浏览器中输入url后,发生的事情 二、ICMP协议1.什么是ICMP协议2.ICM功能3.ICMP的报文格式4.ping命令5.traceroute命令 三、NAT技术1.NAT技术背景2.NAT IP转换过程3.NAPT4.NAT技术的缺陷5.NAT和代理服务器 四、TCP/IP五层模…