【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)|学习笔记(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
全局流量管理 GTM,标准版 1个月
简介: 快速学习【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)

开发者学堂课程【数据仓库 ACP 认证课程【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/928/detail/14627


【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)


五、云监控预警

image.png目前云监控的报警,则分为阈值报警和事件报警。

云监控的两种报警,都需要您手动配置才会生效;

这是类似订阅机制,只有创建了报警,才会订阅相关的事件;

云监控预警是平台的主动预警方式,原来APP有两种资源模式,它有两种资源模式,一个是存储预留版本,一个是存储弹性版本,现在主流的都是弹性版本。

以资源弹性版本为例,通过云监控控制台,弹出对话框,打开对话框之后会出现小铃铛,打开这个小铃铛就进入了监控预警配置的界面。配置之后就相当于订阅了某种事件/某种消息,CPU占用率超过90%会发一个告警到微信或者邮箱短信通知给云用户,具体页面如下图

image.png打开之后要选择要关联的资源,要是从实例界面进入以后它会直接的关联到当前ADB实例。如果通过云监控预警的总控接口进来以后,需要选择具体的实例,包括先选地域,再选实例。

在设置报警规则下面,需要设置规则的名称,设置一些对规则的描述,例如,把规则描述为【资源弹性】节点CPU使用率一分钟周期(可以选择)持续一个周期平均值>=等于阀值,达到持续的周期就是说,达到事件以后,需要满足什么样的条件。比如说默认平均值如果填90%,就是在一分钟周期内,CPU使用率大于90%的情况会触发报警规则。

可以配置沉默周期和生效的时间,其他产品也可以参考。配置好以后,就会再从的页面里显示有哪些规则,在填写完报警规则之后,会产生一个通知信息,通过手机短信也可以收到告警通知,配置好以后可以在历史界面里面显示规则。有两条规则,第一是如果内存使用率超过5%会产生报警,第二是CPU使用时间超过10%产生报警。报警信息如下面例子所示(短信):

【阿里云】尊敬的sqrea** *16:23您的分析型数据库PostgreSQL版实例

hostname=ap-southeast-1.i-

t4n9nv7e19wvnb4gz4d5,

instance_ component=master,

instanceld=gp-t4n59074603xv0p6i

【资源弹性】节点CPU使用率平均值超过10百分比,规则: cpu使用率超过10%,请登录云监控关注。

 

六、SQL 性能调优: Cascade 框架 SQL 优化器

image.png新一代cascade框架的SQL优化器,面向全并行执行架构,代价优化CBO和规则优化RBO相结合,实现复杂SQL免调优。

SQL语言是一种相对于用户比较友好的语言,但是它可以写的很复杂.SQL语言能否进行高效的执行首先考验的是数据库优化器的能力,要看优化器能否在很短的时间内找到一个合适的执行路径,本质上是一个np问题,所以基于传统的代价优化,肯定不能找到最优路径,而是只能找到接近于最优路径的路径,传统的优化器是一个自定义向上的优化器。

●Top-Down路径搜索框架,搜索和路径选择更全面精准,避免出现局部查询路径最优解

●子查询自动改写为分布式JOIN ,实现并行计算,规避手工改写调优

●SQL优化阶段定义动态分区裁剪,即支持确定性过滤条件,也支持参数化的过滤条件,减少I/O

再好的对优化器也需要人工进行改写和干预,所以以上都是在一定程度内减少SQL优化的工作。

 

七、SQL 性能调优:向量化计算引擎

新一代计算引擎Odyssey ,消除火山模型碎片化内存分配

采用LLVM进行动态代码生成( CodeGen) , 提升表达式计算性能

利用CPU的SIMD技术,指令级并行,进一步提升性能

image.png

 

八、SQL 性能调优:SQL 诊断

pg_ stat_activity是一个非常有用的视图,通过其找到有用的 SQL。试想如下场景,在一个正常生产活动中突然发现,原来能够处理的任务数下降了,那么就需要定位到底是什么原因导致现在的处理水平比正常的处理水平有所降低,那么就先通过pg_stat_activity这个视图可以分析排查当前运行的SQL任务以及一些异常问题。

pg_stat_ activity 每行展示的是一个"process" 的相关信息 ,这里的"process" 可以理解为一个用户连接。

通过pg_ stat. activity视图查看当前耗时较长的SQL

通过runtime对其进行一定的过滤,过滤出耗时较长的SQL,SQL对应的query是具体执行的语句,对于执行较长的语句会进行截断。

重点是提取语句的特征,提取特征之后,还需要联系业务方,去通过后台日志找到更加完整的SQL,去查看具体的原因。

 

属性

含义说明

Runtime

语句执行的时长

datname

执行语句的数据库名

usename

执行语句的用户名

waiting

是否在等待

Waiting_reason

等待的原因

query

执行的语句,有长度截断,可通过track_ activity_ query_size调整

查看耗时较长的查询

select current_ timestamp - query_ start as runtime, datname, usename, query from pg. stat_ activity where state != 'idle'order by 1 desc;

九、SQL 性能调优:执行计划两种收集模式

SQL性能调优的最普遍的方法,就是要分析耗时的原因,就是要看执行计划是否正确,主要是通过explain和explain analyze两种方式。二者区别如下

Ø Explain

显示执行计划,不真正执行语句,在计划中显示优化器估算信息

Ø explain analyze

显示执行计划,并且真正执行语句,在计划中显示真实执行信息和估算信息

Ø 执行计划中常用的算子

l 扫描算子Scan

Seq Scan,Index Scan,Bitmap IndexScan + BitmapHeap Scan

l 关联算子Join

Hash Join,Nested LoopJoin, MergeJoin

l 聚合算子Aggregate

Hash Aggregate,Group Aggregate

l 数据重分布算子Motion(对数据进行重分布)

RedistributeMotion,BroadcastMotion, Gather Motion

l 其他算子

Hash, Sort,Limit, Append,etc.

 

十、SQL 性能调优:执行计划

Explain

计划项目

含义说明

算子名称

计划中算子节点的名字,以'->” 开头进行缩进,如例子中的Seq Scan、Sort、 Gather Motion等

算子属性

算子在本计划中的操作属性,如例子中的Sort Key: b表示Sort算子的排序键是b列

Cost

估算的代价,包含启动代价和总代价,中间用间隔

Rows

估计的行数

Width

估计得每行的宽度,单位字节

Optimizer

生成该计划的优化器名字,ADB PG具有优化器自适应功能,可能和用户设置的不一致(对于复杂的,存在着表之间进行关联使用ALLKA优化器)

 

Explain analyse

计划项目

含义说明

Actual time

实际执行单位,单位毫秒

Actual rows

实际输出行数

Plainning time

实际生成执行计划的时间(不能忽略)

Slice memory

每个slice使用的内存情况

Memory used

整个查询使用的内存情况

Execution time

实际执行时间

 

十一、SQL 性能调优:可视化执行计划

可视化执行计划可以更加完整的展示出执行计划数,执行计划数如下图所示。包括每个算子的名称,执行的时间,看起来非常清晰,通过链接http://tatiyants.com/pev/#/plans/new传进去以后生成可视化的执行计划。

explain (format json, analyze true) select count(*) from test, testr where test.num1 =testr.num2;

image.png

 

十二、SQL 性能调优:如何发现问题

1.自上而下,梳理痛点

自上而下梳理计划,确定时间开销大的算子

2.查看代价,对比行数

查看比较代价估算的异常,对比估算行数和实际执行行数差异大的情况,比如估算的是1行,但是实际执行的时候是1000万,这就导致算子选择的不准确,使得出现偏差。

3.耗时算子,尽量避免(在查看执行计划的时候,需要对比较耗时的算子要敏感)

AP场景很少需要NestLoop、Sort+GroupByAgg

4.具体算子,是否合理

Motion :是否有不必要的Motion(motion算子通过网络进行传输肯定不如从走内存或者本地磁盘来读取更合适一些)

Join:内外表顺序

有没有在执行过程中出现下盘或者落盘情况,下盘就是有些可以在内存里面进行的任务,有时候因为代价估算的问题,它把排序内容放到了磁盘或者禁用磁盘上来扩充内存。

由于磁盘的性能远远不如内存,出现下盘之后,整体的执行性能也不会高,当然有的时候数据量较大,下盘也是不可避免的,重点还是要关注下盘是否合理,如果不合理就要作适当调整,这就是发现问题的步骤和手段。

Scan :是否可以使用索引

5.内存信息,调整参数

查看下盘情况,分析后适当调整statement_mem参数

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
SQL 存储 弹性计算
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(二)
快速学习【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(二)
|
存储 数据采集 数据可视化
千字干货带你入门数据仓库,跑通数据建模全流程(附视频)
个推资深大数据研发工程师为大家深入浅出地介绍了数据仓库的前世今生以及数据建模的常用方法。
595 0
千字干货带你入门数据仓库,跑通数据建模全流程(附视频)
|
5月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
6月前
|
SQL Cloud Native 关系型数据库
云原生数据仓库使用问题之分组优化如何实现
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库操作报错合集之遇到“table does not exist”错误,该怎么办
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
SQL Cloud Native 关系型数据库
云原生数据仓库操作报错合集之遇到报错“DDL forbidden because backupTask is doing snapshot”如何处理
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
JSON Cloud Native 关系型数据库
云原生数据仓库操作报错合集之遇到报错 "ERROR: out of shared memory" ,该怎么办
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
SQL Cloud Native 关系型数据库
云原生数据仓库使用问题之如何使用UPDATE语句进行单表更新和多表关联更新
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
SQL 运维 Cloud Native
云原生数据仓库使用问题之运维常用操作文档有哪些
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
6月前
|
SQL Cloud Native 关系型数据库
云原生数据仓库使用问题之如何创建内表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。

热门文章

最新文章

下一篇
开通oss服务