开发者学堂课程【数据仓库 ACP 认证课程:【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/928/detail/14627
【视频】云原生数据仓库 AnalyticDB PG 解析与实践(下)
二十一、SQL 性能调优:数据倾斜的原因和解决
建表过程指定分布键或分布规律:
CREATE TABLE table_ name
( ...... )
[ DISTRIBUTED BY (column. name, [...])
(哈希分布方式)
| DISTRIBUTED RANDOMLY
(随机分布方式)
| DISTRIBUTED REPLICATED ]
(复制分布方式)
;
修改分布键或分布规律:
ALTER TABLE [IF EXISTS ] [ONLY] name SET
WITH (REORGANIZE=true/false)
| DISTRIBUTED BY (column name, [...])
| DISTRIBUTED RANDOMLY
| DISTRIBUTED REPLICATED
;
注意:
修改分布键或分布规律大多数情况都将会进行数据迁移,数据量过大的表该操作会相对较久并且会锁表,无法查询。
REORGANIZE=false仅在修改前后一致或修改为随机分布时才会不进行数据重分布。
分布策略选择规则:
●小表(总行数低于1万,根据实际情况可以进行调整)优先选择复制表分布策略(DISTRIBUTEDREPLACATED)
●大表优先选择参与Join/GroupBy计算的字段作为分布键Hash分布。这时需要注意,使用哈希分布如果使用在一个分布键上的分布均匀,那它对整个的系统性能是最有利的,如果说无法保障其分布均匀,产生较大的数据倾斜,就不能使用哈希分布。
●若没有数据分布均匀的字段作为分布键使用,采用随机分布策略(DISTRIBUTED RANDOMLY)
二十二、演示1:通过 DTS 做数据同步
前置条件:
1.提前存在1个RDS MySQL实例和一个ADB PG实例;
2. MySQL实例里面创建好表,里面插入一定量的数据;
3.开通DMS(为了演示方便)
操作步骤:
1.配置DTS数据同步任务,将表从RDS同步到ADB PG ;
2.启动同步任务;
3.通过DMS观察全量同步结果;
4.在RDS源端继续删除一些数据;
5.通过DMS观察增量同步结果
在DMS数据管理服务里面,找到集成与开发(DTS),默认进入的是数据迁移,找到数据重复,铅以后同步是比较接近的,数据迁移是一次性把数据都迁移过去就结束了,数据同步是建立一个内容之后它会一直进行维护。
数据同步里面创建任务,数据库类型选择MySQL,注意实例地区,要先创建好数据库的账号,当源端和目标端都选择正确以后,需要测试一下,测试通过以后开始下一步操作。从左边选择源库的对象,如果目标案已经存在了这个表,选择清空目标端数据,当然也要根据具体的业务模式进行选择,其他默认操作就可以。
下一步配置库表字段,类型选择哈希分布表,下一步保存任务后台进行预检查,该需要花费一分钟的时间,到这不就表示,所有的检查工作已经做完了,如果要配置链路的话点击下一步购买。
进入同步任务视图,首先进行任务初始化,进行实时刷新,同步的过程分为三个步骤,第一个是库表结构进行同步,第二个是全量同步,第三个是进行增量同步。
整个系统在搭建的初期把线路搭建好,后面监控它日常工作方式就不需要经常去创建任务链路。这时候目的库已经存在了一张表,执行一下就可以看到数据已经同步完成,与Mysal数据量是一样的。
二十三、演示2:增加监控报警规则
前置条件:
1.开通1个一个ADB PG实例;
操作步骤:
1.登陆实例控制台;
2.登陆云监控,关联监控资源;
3.设置报警规则
进入云监控控制台,里面显示是空的,是因为存储的两种方式有资源弹性和资源预留,里面显示的是资源预留的场景,点击小铃铛按钮,从这个入口进来的话它会自动关联当前的实例,自定义名称,对连接数进行设置,要根据具体的场景进行设置,通知对象云帐号报警联系人,云平台最后统一去设定,告警级别默认就可以,没有问题的话就点确认。
可以查看报警历史,也可以再次进行规则修改。
二十四、演示3:排查解决数据倾斜
前置条件:
1.开通1个一个ADB PG实例;
2.某库里面存在若干的表,其中某表存在较严重的数据倾斜
操作步骤:
1.登陆实例控制台,从节点监控观察到存在数据倾斜;
2.登陆数据库,执行命令排查具体倾斜的表;
3.执行命令修改分布列,解决数据倾斜问题;
找到实例监控的节点监控,可以看到存储使用量,存储使用量有四个节点,正常情况下,它们都在同一条水平线上,这时候发现黄色的线高于其他颜色的线,存储水位也是这种情况,这时候就存在了数据倾斜。
发现有数据清洗,现在以后就要去进行定位,查找一下倾斜情况。修改一下分布列,这个过程需要搬迁数据,所以在执行过程中这个表也是不可以读写的。
二十五、真题讲解
1.在AnalyticDB PostgreSQL版中,下面( )场景不是DTS的设计目标。
A.异地灾备
B.异构数据库读写分离
C.停机迁移数据
D.异地多活
正确答案:C
分析:所有的迁移数据和同步数据,需要源端和目的端都是启动的,所以停机迁移数据不是DTS的设计目标。
2.在AnalyticDB PostgreSQL版中,DTS增量同步支持的操作包括( )?
A. COPY
B. DELETE
C. ADD PARTITION
D. ALTER TABLE
E. ADD TABLE
正确答案:ABD
3.AnalyticDB PostgreSQL可以通过SQL诊断功能来检索某个时间段内执行耗时较长的查询,然后在查询属性中查看目标查询的耗时。以下属于查询CPU消耗较大的是( ) ?
A.过滤条件没有下推到存储层
B. Join条件中带有过滤操作
C. Join时没有指定Join条件
D. Join条件中没有带有过滤操作
E.过滤条件下推到存储层
正确答案:ABC
4.在AnalyticDB PostgreSQL版中,在修改分布键时若没有指定REORGANIZE=fasle,会发生( ) ?
A.表不发生重分布
B.表中被删除的数据仍然保留
C.表中被删除的列仍然保留
D.表在分布键没有发生变化或指定随机分布策略时不进行重分布
正确答案:ABC
5.在AnalyticDB PostgreSQL版中,用户连接实例发现业务作业跑的比较慢,同时业务查询SQL处于running的状态,这个可能是如下( )原因引起的。
A.连接数超出限制
B. XLOG堆积太大
C.数据倾斜太大
D.任务排队堆积
正确答案:C