[视频]云原生数据仓库 AnalyticDB PostgreSQL 版解析与实践(上)|学习笔记(三)

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
对象存储 OSS,20GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习[视频]云原生数据仓库 AnalyticDB PostgreSQL 版解析与实践(上)

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

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


[视频]云原生数据仓库 AnalyticDB PostgreSQL 版解析与实践(上)

 

(4)UDF和存储过程:捕获异常

PL/pgSQL通过 EXCEPTION从句捕获异常。

[ <<label>> ]

[ DECLARE

declarations ]

BEGIN

Statements

EXCEPTION

WHEN condition [ OR condition ...] THEN

handler_statements

WHEN condition [ OR condition ... ] THEN

handler_statements

...]

END;

注意事项

condition表示异常类别。参考errcodes。

特殊的异常类别OTHERS,可以匹配所有类别的异常。块中包含EXCEPTION从句,则能够行成一个子事务,并且能够在不影响外部事务的前提下回滚。

(5)UDF和存储过程∶捕获异常-示例

CREATE OR REPLACE FUNCTION f_block_exception()

RETURNS integer

LANGUAGE plpgsql

As $function$

DECLARE

x integer := 0;

y integer := 0;

BEGIN

SELECT COUNT(*) INTO x FROM mytab WHERE lastname = "zhang";

INSERT INTo mytab(firstname, lastname) VALUES('san'," zhang);

DECLARE

msg text

BEGIN

UPDATE mytab SET firstname = "three WHERE lastname = "zhang";

x:= x+1;

y := x /0; -- Exception occurs

EXCEPTION WHEN OTHERS THEN

GET STACKED DIAGNOSTcs msg := MESSAGE_TEXT;

RAISE NOTICE "Caught exception: %" , msg;

RETURN x;

END;

END;

$function$;

(6)UDF和存储过程:UDF示例

--创建表student,插入3条记录

create table student(name varchar(30), score float4);

insert into student values("张三",88),('李四",99),('王五",92);

--创建函数将student记录转换成json格式

create or replace function f_student_to_json(student)

returns json

language plpgsql

strict

as $function$

declare

stu alias for $1;

begin

return row_to_json(stu);

end;

$function$;

--创建操作符>!<使用f_student_to_json函数

create operator >!< (procedure = f_student_to_json,leftarg = student);

--使用操作符>!<遍历student表

select s >!< from student s;

image.png

4.备份恢复

物理备份技术

(1)备份恢复:技术原理介绍

基础备份+日志归档+一致性恢复点→集群恢复

ADBPG集群物理基础备份,不会阻塞用户业务执行,因此,集群的基础备份期间,依然会产生大量WAL日志。集群恢复需要WAL持续归档。

一致性恢复点,通过在数据库的访问入口处( QD节点)独占获取事务提交锁,阻塞其他事务的提交,从而保证恢复点创建时刻的集群事务一致性。

通过一致性恢复点,恢复时,将集群各个节点对齐到事务一致的数据库状态。

保证恢复一致性

(2)备份恢复:基础备份

image.png定期做

基础备份,又称全量备份,是对整个集群的所有primary 节点(包括master,但不包括secondary master )进行全量数据备份。

公有云默认备份到OSS。

备份不阻塞业务,备份期间产生的增量WAL日志由归档操作保证备份到OSS。

备份期间,会自动重新备份异常的节点,如主备切换、连接异常等情况。

备份完成后,创建一致性恢复点,最为恢复时的恢复目标,以保证恢复集群一致性。

一些不变动数据,不进行备份,减少备份数据量,提升备份性能

(3)备份恢复:日志备份

日志备份,又称增量备份。通过归档命令,对集群的所有primary节点上的WAL日志段进行备份。

公有云默认备份到OSS

(4)备份恢复:创建一致性恢复点

请求创建一致性恢复点

独占申请两阶段提交锁,阻塞其他分布式事务提交。

Master节点创建恢复点。

Segment节点创建恢复点。

释放两阶段提交锁。

等待恢复点WAL日志归档。

image.png通过分布式提交锁,确保恢复点创建时刻的集群事务一致性。一致性恢复点在集群的每个primary节点新增一条WAL日志记录。

只有完成WAL日志归档的一致性恢复点,才能够用于分布式集群的归档恢复。

(5)备份恢复:恢复新实例

并行从OSS下载基本备份。

更新集群拓扑结构,并重启集群。

设置一致性恢复点作为恢复目标。

添加高可用备机,完成恢复。

持续下载并恢复归档的WAL日志。

image.png

5.资源隔离使用

(1)资源隔离:资源管理简介

image.pngADB PG实例的资源的定义:

CPU

内存

IO

并发连接

查询计划

资源管理方案:

资源队列( Resource Queue )

资源组( Resource Group )

并行度的设置以及 CPU 优先级的设置

并发连接数被占满,无法接受连接

内存超过可用内存范围,进程被杀死;

IO带宽争用导致查询和写入性能下降

(2)资源隔离:资源队列技术介绍

资源队列能够对数据库的CPU、内存等资源进行限制,对多租户资源限制、保障数据库稳定运行具有一定的作用;

支持进行四种类型的资源限制∶并发限制、CPU限制、内存限制和查询计划限制。

配置名

配置说明

MEMORY_LIMIT

队列中所有查询所使用的的内存的量。例如,对ETL查询设置2GB的MEMORY_LIMIT,这样每个Segment里的ETL查询最多使用2GB的内存。

ACTIVE_STATEMENTS

队列中槽位的数量;一个队列中最大可并行数,当所有槽位都占用时,新的查询必须等待。默认每个查询使用等量的内存。

PRIORITY

查询使用的相对CPU使用量,可以设置为以下级别:LOW、MEDIUM、HIGH和MAX。默认级别是MEDIUM,查询优先权的机制会监控系统中所有正在运行的查询的CPU使用量,并根据其优先权别来调整其CPU使用量。例如,你可以为执行资源队列设置MAX优先权,为其他查询设置MEDIUM优先权,确保执行查询可以获得比较多的CPU资源。

MAX_COST.MIN_COST

查询计划消耗限制。数据库优化器会为每个查询计算消耗,如果该消耗超过了资源队列所设定的的MAX_COST的值,该查询就会被拒绝。

(3)资源隔离:创建资源队列

CREATE RESOURCE QUEUE name WITH (queue_attribute=value [...]) where queue attribute is:

ACTIVE_STATEMENTS=integer

[ MAX_COST=float[CoST_OVERCOMMIT={TRUE|FALSE)] ]

[ MIN_COST=float ]

[ PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX} ]

[ MEMORY_LIMIT='memory_units' ]

=#CREATE RESOURCE QUEUE adhoc wITH (ACTIVE_STATEMENTS=3 ) ;

创建带有并发限制的队列

=#CREATE RESOURCE QUEUE myqueue wITH(ACTIVB_STATEMENTS=20,

MEMORY_LIMIT="2000MB " );

创建带有内存限制的队列

=#CREATEZRESOURCE QUEUE executive wITH (ACTIVB_STATEMENTS=3,PRIORITY=MAX);

设置优先级

(4)资源隔离︰指派角色(用户)到资源队列

指派角色到优先级队列

一旦创建了一个资源队列,用户必须把角色(用户)指派到它们合适的资源队列。

如果没有显式地把角色指派给资源队列,它们将进入默认资源队列pg_default。默认资源队列的活动语句限制是20,没有代价限制,优先权设

=#ALTER ROLE name RESOURCE QUEUE queue_name ;

=#CREATE ROLE name wITH LOGIN RESOURc QUEUE queue_name ;

从资源队列移除角色

如果用户想要从一个资源队列移除一个角色并且把它们放在默认队列中,可以将该角色的队列指派改成none。例如∶

=#ALTER ROLE role_name RESOURCE QUEUE none;

修改资源队列配置

ALTER RESOURCE QUEUE命令更改资源队列的限制。要更改一个资源队列的限制,可以为该队列指定想要

=#ALTER RESOURCE QUEUE adhoc wITH(ACTIVE_STATEMENTS=5);

=#ALTER RESOURCE QUEUE exec wITH(PRIORITY=MAX);

删除资源队列

DROP RESOURCE QUEUE命令可以删除资源队列。要删除一个资源队列,该队列不能有指派给它的角色,也不能有任何语句在其中等待。

(5)资源隔离:状态监控

监控操作

说明

语句

查看队列中的语句和资源队列状态

gp_toolkit.gp_resqueue_status视图允许管理员查看一个负载管理资源队列的状态和活动

SELECT * FROM gp_toolkit.gp_resqueue_status;

查看资源队列统计信息

如果想要持续跟踪资源队列的统计信息和性能,用户可以使用pg_stat_resqueues系统视图来查看在资源队列使用上收集的统计信息

SELECT * FROM pg_stat_resqueues;

查看指派到资源队列的角色

要查看指派给资源队列的角色,执行下列在pg_roles和gp_toolkit.gp_resqueue_status系统目录表

SELECT rolname, rsqname FROM

pg_roles.gp_toolkit.gp_resqueue_status WHERE

pg_roles.rolresqueue=gp_toolkit.gp_resqueue_status.queueid;

查看资源队列的等待查询

用户可以看到所有资源队列的所有当前活跃的以及在等待的查询

SELECT*FROM gp_toolkit.gp_locks_on_resqueue WHERE

lorwaiting='true'

查看活动语句的优先权

查看当前正在被执行的语句并且提供优先权、会话ID和其他信息

SELECT * FROM gp_toolkit.gp_resq priority_statement;

重置活动语句的优先权

gp_adjust_priority(session_id,statement_count.priority)调整当前正在被执行的语句的优先权。使用这个函数,超级用户可以提升或者降低任意查询的优先权.

SELECT

gp_adjust_priority(752,24905,"HIGH)

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
6天前
|
存储 Cloud Native 块存储
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
|
8天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
9天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
14天前
|
Kubernetes Cloud Native 调度
云原生批量任务编排引擎Argo Workflows发布3.6,一文解析关键新特性
Argo Workflows是CNCF毕业项目,最受欢迎的云原生工作流引擎,专为Kubernetes上编排批量任务而设计,本文主要对最新发布的Argo Workflows 3.6版本的关键新特性做一个深入的解析。
|
16天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
20天前
|
监控 数据挖掘 OLAP
深入解析:AnalyticDB中的高级查询优化与性能调优
【10月更文挑战第22天】 AnalyticDB(ADB)是阿里云推出的一款实时OLAP数据库服务,它能够处理大规模的数据分析任务,提供亚秒级的查询响应时间。对于已经熟悉AnalyticDB基本操作的用户来说,如何通过查询优化和性能调优来提高数据处理效率,是进一步提升系统性能的关键。本文将从个人的角度出发,结合实际经验,深入探讨AnalyticDB中的高级查询优化与性能调优技巧。
59 4
|
23天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
81 1
|
6月前
|
边缘计算 Cloud Native 数据管理
【阿里云云原生专栏】云原生背景下的AIoT布局:阿里云Link平台解析
【5月更文挑战第29天】阿里云Link平台,作为阿里云在AIoT领域的核心战略,借助云原生技术,为开发者打造一站式物联网服务平台。平台支持多协议设备接入与标准化管理,提供高效数据存储、分析及可视化,集成边缘计算实现低延时智能分析。通过实例代码展示,平台简化设备接入,助力智能家居等领域的创新应用,赋能开发者构建智能生态系统。
180 3
|
23天前
|
运维 Cloud Native 持续交付
云原生技术解析:从IO出发,以阿里云原生为例
【10月更文挑战第24天】随着互联网技术的不断发展,传统的单体应用架构逐渐暴露出扩展性差、迭代速度慢等问题。为了应对这些挑战,云原生技术应运而生。云原生是一种利用云计算的优势,以更灵活、可扩展和可靠的方式构建和部署应用程序的方法。它强调以容器、微服务、自动化和持续交付为核心,旨在提高开发效率、增强系统的灵活性和可维护性。阿里云作为国内领先的云服务商,在云原生领域有着深厚的积累和实践。
51 0
|
4月前
|
存储 数据挖掘 BI
数据仓库深度解析与实时数仓应用案例探析
随着数据量的不断增长和数据应用的广泛深入,数据治理和隐私保护将成为数据仓库建设的重要议题。企业需要建立完善的数据治理体系,确保数据的准确性、一致性和完整性;同时加强隐私保护机制建设,确保敏感数据的安全性和合规性。
516 55