阿里云 PostgreSQL_ 开发实践_6 | 学习笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 简介:快速学习阿里云 PostgreSQL_ 开发实践_6

开发者学堂课程【PostgreSQL 云上开发实践:阿里云 PostgreSQL_开发实践_6】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/528/detail/7109


阿里云 PostgreSQL_ 开发实践_6


目录

一. 分级存储功能

二. 索引选择

三. 统计信息采集调度

四. 队列管理

五. metascan+sort Key+index 实践

六.大吞吐输出场景开发实践

七. 查看数据倾斜

八. 查看数据膨胀、清理膨胀

九.清理垃圾,行存、列存切换

十. 数值类型的选择

十一. 连接池


一. 分级存储功能

https://help.aliyun.com/document_detail/35457.html

l 热数据

-实例本地存储

l 访问频次较低数据

- OSS 外部表存储

-压缩格式选择

l 继承与分区约束

-每个 OSS 外部表负责一部分数据

-使用约束

-建立 OSS 外部表继承关系

 

二. 索引选择

l 自动索引选择

- https://github.com/digoal/blog/blob/master/201706/20170617_01.md

l GiST

-空间数据

l B-Tree

-等值、区间、排序

l Bitmap

- https://github.com/digoal/blog/blob/master/201705/20170512_01.md

-类似倒排

- value:所有行号对应的bitmap

-含100到1万个唯一值的列


三. 统计信息采集调度

l 专治 SQL 执行计划不准。

l gp_autostats_mode

- none:不收集

- on_no_stats:没有统计信息时,收集

- on_change:当写入、更新量超过阈值

(gp_autostats_on_change_threshold参数设置的行数,默认为2o亿)后,百动收集统计信息。
l https://github.com/digoal/blog/blob/master/201712/20171211_03.md


四. 队列管理

l CREATE RESOURCE QUEUE name WITH (queue_atribute=value [, ...])

l where queue_attribute is:

l ACTIVE_STATEMENTS=integer

l [ MAX COST=float [COST_OVERCOMMIT={TRUE |FALSE}]]

l [ MIN_COST=float ]

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

l [MEMORY_LIMIT='memory_units' ]

l [MAX_COST=float [ COST_OVERCOMMIT={TRUE |FALSE}]

l [ ACTIVE_STATEMENTS=integer ]

l [MIN_COST=float ]

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

l [ MEMORY_LIMIT='memory_units' ]l https://github.com/digoal/blog/blob/master/201708/20170821_01.md

资源使用、隔离、控制


五. metascan+sort Key+index 实践

这样的两个功能点其实是受到我们的一个时序数据的一个启发,也就是说,时序数据的这个字段,它的值,它的存储,以及它的这个存进来的这个值是具有一定的线性相关性的

就比如说我们的时间,我们某一个字段,某一个字段表示的是我的数据的插入时间,那么就意味着说,我的每一条记录插进来的时候,我的时间就是在我们的一个方向上,是递增的这个方向上,是有这个线性相关性的,

那因此,我们要搜索某区间的数据的时候,比如我要搜2018年的2月19号一天的数据,那么一天的数据实际上是集中在某一些数据块里面的,,因为它是有一些线性相关性,因此它的数据存储是聚集的,是有一定的聚集性的。


六.大吞吐输出场景开发实践

https://github.com/digoal/blog/blob/master/201707/20170726_01.md

使用 Hybrid DB for PostgreSQL,同时实现了实时分析,准实时数据规整两个需求。

OSS 作为海量数据入口,HDB 作为 OSS 的计算引擎,实现海量数据实时分析。

同时 HDB 作为数据规整引擎,被规整的数据不需要在数据库本地落地,直接从 OSS 到 OSS ,只是用到了 HDB 的规整能力。

性能可以通过扩展 HDB 的计算节点线性扩展:

海量数据源,写入 OSS ,通过 HybridDB for PostgreSQL 的 oss_ext 插件,实时分析写入的数据。

OSS带宽指标:目前每个计算节点每个会话约30MB/s的读写速率。

对于列式存储格式,数值类型。1亿记录约381MB,压缩比5:1的话,约76.3MB。

按行换算的性能指标:2048个计算节点,读写吞吐约 805亿行/s。每天处理6900万亿行(当然,按多列进出打个折扣,万亿级别也是没有问题的)。


七. 查看数据倾斜

l 数据分布不均匀,导致性能差、存储空间受限、木桶效应。

- https://github.com/digoal/blog/708/20170821_02.md


八. 查看数据膨胀、清理膨胀

l 堆表膨胀检测-

https://github.com/digoal/blog/blob/master/201708/20170817_01.md

l AO 表膨胀检测https://github.com/digoal/blog/blob/master/201708/20170817_03.md

使用这个函数可以查看AO表的膨胀率

postgres=# \df+ gp_toolkit.__gp_aovisimap_compaction_info  

List of functions  

-[ RECORD 1 ]-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------  

Schema | gp_toolkit  

Name | __gp_aovisimap_compaction_info  

Result data type | SETOF record  

Argument data types | ao_oid oid, OUT content integer, OUT datafile integer, OUT compaction_possible boolean, OUT hidden_tupcount bigint, OUT total_tupcount bigint, OUT percent_hidden numeric

Type | normal

2 | 1 | f |21 | 208283 | 0.01

9 |1 | f25 |208303 | 0.01

 

九.清理垃圾,行存、列存切换

https://github.com/digoal/blog/blob/master/201712/20171208_04.md

 

十. 数值类型的选择

l 如果有除法,并且需要确保精度,建议 float8 或 numeric

l 海量数据处理,建议采用float8或int8

l 数值类型

-numeric 性能较低(内部实现的数据类型,有大量 memcpy )

- float4, float8, int,  int8 性能较高


十一. 连接池

l pgbouncer

- https://github.com/digoal/blog/blob/master/201801/20180128 04.md

- https://www.linkedin.com/pulse/scaling-greenplum-pgbouncer-sandeep-katta-/?articleld=6128769027482402816

- https://pgbouncer.github.io/

l pgpool-ll

- http://pgpool.net/mediawiki/index.php/Main_Page

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6天前
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库产品使用合集之阿里云云原生数据仓库AnalyticDB PostgreSQL版的重分布时间主要取决的是什么
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
阿里云斩获国际顶会ICDE 2024最佳论文,0.5秒实现数据库跨机实例迁移。
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
|
6天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB是阿里云自主研发的关系型云原生数据库
【5月更文挑战第14天】PolarDB是阿里云自主研发的关系型云原生数据库
45 3
|
6天前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
164 49
|
6天前
|
安全 Devops 测试技术
深入了解阿里云云效DevOps:构建高效软件开发实践
阿里云云效DevOps,集成CI/CD与自动化测试,提升开发效率。支持持续集成确保代码质量,自动化测试加速交付,多环境及灰度发布保障安全可靠性。助团队构建高效开发实践,增强竞争力。
22 1
|
6天前
|
关系型数据库 分布式数据库 数据库
开源之夏2024学生报名启动!阿里云PolarDB社区项目期待你的参与!
开源之夏2024学生报名启动!阿里云PolarDB社区带你变得更强!
开源之夏2024学生报名启动!阿里云PolarDB社区项目期待你的参与!
|
6天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
155 0
|
6天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
6天前
|
测试技术 块存储 开发者
阿里云块存储团队软件工程实践
本文介绍了阿里云团队软件工程实际开发流程,并简述了开发过程中遇到的一些问题。且附带案例,以及遇到案例中出现的情况应当如何应对。
|
6天前
|
Cloud Native 关系型数据库 分布式数据库