暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB性能调优简介

原创 张欣 2024-01-17
437

       我们知道数据库作为系统软件,在整个计算机体系中起到关键的承上启下作⽤。可以看到应⽤程序通过北向接⼝与数据库进⾏交互,数据库通过南向接⼝与操作系统和硬件进⾏交互。对于数据库系统的性能影响是多⽅⾯的,不管是硬件规格、操作系统配置、数据库系统的设计、应⽤和客户端的连接⽅式,都会对业务最终的性能表现产⽣很⼤的影响,所以数据库的性能表现本质上是整体计算机系统软硬件协调的结果。

       数据库性能优化充满复杂性和挑战性,既有主观的成分,也有复杂的⼀⾯。性能问题的主观性,举例来说,某个查询消耗是1s,它的性能是好还是坏,是否脱离业务⽬标很难讲清楚。所以描述性能问题时要⽬标清晰、描述具体、结果可度量。例如⼀个问题出现后,需要给出硬件配置、参数信息、部署形态、业务场景、当前结果、期望⽬标等信息。另⼀个⾯临的性能问题是复杂性,通过⼀个问题表象,很难⼀眼判断是哪个模块引起的,需要分析出⼀个明确的⽅向,进⼀步观察作业在不同模块间数据流动,⽤全局视⻆来分析问题;如果性能问题不是单点的问题,我们需要从中找到引起问题的主要⽭盾,然后先解决掉⼤头,看看是否满⾜业务诉求。

在遇到数据库性能相关问题时,经常会出现⼀些⾏业术语,这些在性能优化中很常⻅,记录⼀下:

(1)IOPS通常指数据库系统数据盘每秒读写IO的次数,反映了磁盘IO的读写能⼒;

(2)吞吐量,往往指的是数据库每秒处理事务数TPS或者查询数QPS,反映整体的负载状况;

(3)响应时间,指的是数据库中⼀条查询从发起到结果返回的时间开销,⽤来识别慢SQL;

(4)饱和度,指⼤并发场景下属于⼯作队列的任务数,反映当前系统作业被积压的情况,以及忙闲程度。

GaussDB数据库的逻辑架构

分析GaussDB性能问题前,先简单介绍⼀下其逻辑架构,主要包括以下组件:

  • CM集群管理组件,负责集群、节点、实例级别启停,以及集群状态查询、选主、主备切换等;
  • OM运维管理组件,负责⽇常的运维和管理操作,例如安装、升级、节点替换等;
  • GTM全局事务管理器,负责⽣产和维护全局事务ID、快照、sequence等全局唯⼀信息,确保全局事务⼀致性;
  • CN协调节点,负责接收应⽤的访问请求,并将结果返回给客户端;在CN中完成SQL解析和优化后,将计划下发到各DN执⾏;
  • DN数据节点,负责存储业务数据,执⾏数据查询业务,并返回执⾏结果;

ETCD⼀致性组件,存储集群的拓扑状态和信息、主备状态信息、全局事务ID、sequence依赖ETCD、CMS⾃身仲裁和CMS对数据库组件的仲裁依赖ETCD等。后续ETCD将改为⾃研组件DCC分布式配置中⼼来存储集群配置信息,这⾥⾯影响业务查询的核⼼组件是GTM、CN和DN组件

GaussDB数据库的查询处理流程

了解GaussDB架构后,简单梳理⼀下查询处理流程,拆解到每个模块,展开⼀下每个模块的功能和性能关注点。

(1)SQL解析模块:查询解析模块,将SQL⽂本翻译为解析树,这⾥⾯性能主要因素是词法、语法、语义分析效率,⽤到的技术是模板查询免解析和PBE模式绑定变量⽅式执⾏。

(2)⽣成执⾏计划阶段:查询优化将进⾏逻辑优化和物理优化,最终⽣成物理计划,性能核⼼点是⾼效计划⽣成,包括计划缓存、重写规则、基数估计、代价估计准确率等。

(3)执⾏阶段:在查询执⾏阶段,执⾏查询计划,并将结果返回。这⾥⾯性能核⼼点包括SMP并⾏执⾏、分布式执⾏、基于编译技术的算⼦执⾏、表达式计算等。

(4)IO阶段:在查询时进⾏数据读取,性能涉及存储引擎的多个模块,包括⾼效的存储数据、并发控制、事务能⼒等。最终所有各阶段的执⾏消耗综合,决定了查询端到端性能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论