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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 简介:快速学习阿里云 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
138 6
|
2月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
70 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
2月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
75 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
69 1
|
2月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
6月前
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
41 0
|
4月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
60 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
4月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
169 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
4月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
40 6
|
4月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。