GaussDB SQL调优:选择合适的分布列
一、背景
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分布式形态整体架构如下:
欢迎大家交流~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源日报 | PHP排名跌至历史最低;AI浪潮中Meta做对了什么;芯片人才缺口巨大;zx 8.0.0
欢迎阅读 OSCHINA 编辑部出品的开源日报,每天更新一期。 # 2024.4.9 今日要点 微信基于 SQLite 的开源终端数据库 WCDB 迎来重大升级 WCDB (WeChat Database) 是微信团队基于 SQLite 开发的终端数据库。自 2017 年 6 月开源以来,它在业界得到了广泛认可并被大量应用,迄今已经推出了十多个版本。在这个过程中,WCDB 一直保持良好的向后兼容性,不断完善原有接口的细节并添加新功能。 如今,微信团队宣布将迎来重大升级的新版本 WCDB 进行开源,主要变化及更新包括: 更丰富的开发语言支持:新增支持了 C++,完整支持了 Java 和 Kotlin 语言的 ORM,覆盖更多终端平台; 更强大的 SQL 表达能力:对 Winq 进行了重写、强化等; 更安全的数据存储能力:全新的数据备份方案、修复方案等; 更灵活的数据扩展能力:数据迁移、数据压缩等; 更细致的性能优化能力:FTS5 优化、可中断事务等。 FFmpeg 之父 Fabrice Bellard 发布音频压缩工具 TSAC FFmpeg 之父 Fabrice Bellard 发布音...
- 下一篇
面向 NGINX 和 NGINX Plus 的 OpenTracing
原文作者:Mohamed Gougam of F5 原文链接:面向 NGINX 和 NGINX Plus 的 OpenTracing 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在nginx.org.cn 尽管微服务架构有诸多优势,但它也带来了新的挑战。其中一个挑战是在处理请求时对其进行追踪,因为请求数据在组成应用的所有微服务之间流动。为此,一种被称为分布式(请求)追踪的新方法用来解决这一挑战,OpenTracing供一组规范和标准的 API,旨在指导分布式追踪工具的设计和实施。 在 NGINX Plus Release 18 (R18) 中,NGINX 官方将NGINX OpenTracing 模块添加到 NGINX Plus 动态模块库中(它已经作为第三方模块被使用了数年)。NGINX OpenTracing 模块的一大优势是,通过对 NGINX 和 NGINX Plus 进行分布式追踪,您可以获得每个代理应用的追踪数据,而无需单独对应用进行追踪。 在这篇博客中,我们将展示如何为 NGINX 或 NGINX Plus 启用分布式请求追踪(为简洁起见,我们从现在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群