PostgreSQL 15新版本特性解读(含直播问答、PPT资料汇总)
2022年6月23日,墨天轮技术社区联合PostgreSQL中文社区共同举办【PostgreSQL 15 新特性解读】直播活动。
小编在这里整理了直播间的代表性问题,请老师为大家解答。并在文末附上视频回放与PPT课件,以便大家下载、回顾。
直播亮点回顾
直播间的四位讲师分别从性能体验更新、新旧版本对比,最佳技术实践等主题展开讲解,干货满满。
来自中兴通讯数据库内核系统工程的尚长军老师分享的主题是《 PostgreSQL 15 Beta 1 新特性解读》,他从应用、工具、Contirb等三个方面出发,对Sort排序、WAL压缩算法、\Doconfig命令、“_ _"注释、\watch命令、\getenv命令等多个改进做了详细解读。
以新版本的Sort排序为例,通过对比测试10000行整数值排序的性能、仅存储Dantum性能提升很明显,新版本相较PG14快了近26%。
来自云和恩墨的PG技术顾问彭冲老师带来了《 PostgreSQL 15 部分新特性预览》的主题分享,介绍了新版本在参数、开发以及并行特性等方面的改进优化。从参数出发,新版本就新增了GUC增强内部标志管理、可配置权限、新增参数权限系统表、自定义变量限制等四个改进。
云和恩墨的技术顾问阎书利老师分享的主题是《PostgreSQL 15 系统表、视图及等待事件改动》,他为大家介绍了新版本在系统表、视图及等待事件上的改动。
在系统标中新增pg_publication_namespace,当在CREATE PUBLICATION语句中指定FOR ALL TABLE IN SCHEMA子句时,会把信息存储下来,提供publication和schema之间的映射。15版本新特性通过模式发布,支持FOR ALL TABLE IN SCHEMA语法。
最后一位登场的是海能达通信股份有限公司 PostgreSQL高级DBA 崔鹏老师,他带来的主题是《PostgreSQL 15版本迁移兼容性解析》。崔老师不仅解析了升级兼容性之28项不兼容迁移,同时还带大家对PG15新特性做了整体预览。
相信本次分享能够帮助大家加深对新版本的了解,从而更好应用实战。
问答汇总
四位讲师分享的内容干货满满,直播间的问答区也非常积极。墨天轮在此整理了代表性的问题,邀请讲师们以文字的形式回答,以供大家学习交流。
尚长军
Q1、请问新手学习PostgreSQL数据库,从哪个版本入手比较好?
答:可以从最近的版本入手即可,比如PG14。
Q2、公司使用部署PG的话,哪个版本比较稳定?
答:目前PG几乎每年都会有大版本发布,如果兼顾稳定和功能,建议12.7;如果需要用到一些新的能力,可以采用14.2。
Q3、PG可以跨版本升级吗?
答:可以的。
Q4、MERGE 新特性是否和其他主流的数据库兼容,听说仅仅支持PL/PGSQL,那么对相关表的触发器是否有影响?
答:老版本的 MERGE 无论是从语法还是用法,都和主流的如Oracle差别比较大,因此对触发器的应用是有影响的。
据说PG15做了改进,更符合SQL标准了,可以用新版本测试一下。
Q5、PG10可以直接升级到PG15吗?
答:可以的,我们通过pg_upgrade工具进行过pg10到pg14的升级 。
Q6、PG15 在windows下有什么新的改变?
答:新的特性基本上在Windows上都是支持的,除了极少数特性。
Q7、pl/pgsql 编程有没有好的教程?
答:目前市面上有关pg的技术书籍已经很多了,我觉得最好的教程还是PG各个版本的官方参考手册。
彭冲
Q1、有没有PG和mysql、Oracle迁移的相关工具,可以提供一下?
答:常见的工具有pgloader迁移mysql、ora2pg迁移oracle。
Q2、oracle 19c 迁移到PG那个版本好?
答:保守一点可以使用13。
Q3:类似Oracle11g interval分区的自动扩展分区的功能会加入到PG里吗?
答:目前还没看到,将来版本可能有。
阎书利
Q1、请问pg新手有什么学习资料和书籍可以推荐吗?
答:《PostgreSQL修炼之道 从小工到专家》、官方文档
Q2、pg_index 这个改动,应该来说 null 只能有一个或者不能有空值这样才合理,之前为啥可以插入多个null值,基于什么考虑设计的呢?
答:这个应该和业务有关,不同业务需求不一致
Q3、pg_index是整个cluster共享的还是每个数据库拥有一份?
答:pg_index、pg_class这类的系统表是每个数据库独享一份,这些是在数据库创建时从模板数据库拷贝过来的,但是类似于pg_database、pg_namespace这些是整个cluster的所有数据库共享的。
Q4、老师,PostgreSQL数据库和主流MySQL和Oracle的相同点和区别有那些呀?
答:其实异同是比较多的。这里我主要说几点关键的:
1.三个都是关系型数据库
2.ORACLE是收费的,且不开源。MYSQL和PostgreSQL是开源的,但是PostgreSQL的开源协议更彻底一些
3.数据库MVCC的实现方法有两种:
(1)写新数据时,把旧数据移到一个单独的地方,如回滚段中,其他人读数据时,从回滚段中把旧的数据读出来;
(2)写数据时,旧数据不删除,而是把新数据插入。
PostgreSQL数据库使用第二种方法,而Oracle数据库和MySQL中的innodb引擎使用的是第一种方法。
Q5、Mysql 转 PG 有什么现成好用的工具?
答:可以使用比如pgloader、FDW等方式迁移
Q6、想了解内核与源码,请问老师有没有推荐的学习资料?
答:可以看看《PostgreSQL数据库内核分析》这本书,再可以多看看源码的注释部分,一样可以学到很多知识。
崔鹏
Q1、执行计划查看有没有详细的解释?
答:推荐大家看下《PostgreSQL修炼之道 从小工到专家》这本书,
或者看下德哥视频中讲解explain这部分的内容。
Q2、pg的执行计划,查看的顺序是?
答:
postgres=# explain (analyze, verbose, costs, buffers, timing) select count(*) from t1;
QUERY PLAN
------------------------------------------------------------------------------------------------------------
Aggregate (cost=20.75..20.76 rows=1 width=8) (actual time=0.017..0.018 rows=1 loops=1)
这个节点的输出, 聚合, 输出第一行前的开销是20.75
聚合的开销=20.75..20.76
Output: count(*)
Buffers: shared hit=1 这个节点以及下级节点的BUFFER统计项
-> Seq Scan on public.t1 (cost=0.00..18.60 rows=860 width=0) (actual time=0.011..0.012 rows=6 loops=1)
这个节点的路径(全表扫描)
0.00表示输出第一行前的成本, 如这里输出第一行前不需要排序为0.00. 后面是这个节点真实的时间
Output: id, name, age这个节点输出的列
Buffers: shared hit=1 这个节点的shared buffer命中1个page
Planning Time: 0.050 ms SQL解析时间
Execution Time: 0.102 ms 总的执行时间
(8 rows)
执行计划 自下 向上 一个节点 一个节点看
Q3、pg 有特定的适用环境么?
答:OS层面适配了所有主流操作系统。
使用Citus或者GP 可以将PG适用于HTAP业务
Q4、pg 有session 限制吗?
答:PG是多进程架构,如果会话过多 需要考虑 会话进程占用的内存等资源
资料汇总
1、视频回放:PostgreSQL 15 新特性解读
2、直播资料:PostgreSQL 15 直播资料汇总
欲了解更多可以进入墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
PostgreSQL 15新版本特性解读(含直播问答、PPT资料汇总)的更多相关文章
- Java 15 新特性:隐藏类
什么是隐藏类 隐藏类,是一种不能被其他类直接使用的类.引入隐藏类的主要目的是给框架来使用,使得框架可以在运行时生成类,并通过反射间接使用它们.可能有点抽象,不要紧,下面我们通过一个例子来直观的认识它! ...
- 【PostgreSQL 】PostgreSQL 15对distinct的优化
示例表 table t_ex; c1 | c2 ----+---- 2 | B 4 | C 6 | A 2 | C 4 | B 6 | B 2 | A 4 | B 6 | C 2 | C 以下SQL语 ...
- Java SE 15 新增特性
Java SE 15 新增特性 作者:Grey 原文地址:Java SE 15 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...
- 【PostgreSQL】PostgreSQL 15移除了Stats Collector
试用即将发行的PostgreSQL 15的人会发现少了一个后台进程: postgres 1710 1 0 04:03 ? 00:00:00 /usr/pgsql-15/bin/postmaster ...
- 用极简方式实现新浪新版本特性展示效果--view的图片轮播
在发布版本的时候,大多数软件会在第一次使用新版本时候弹出视图用几张图片给用户做一个新版本特性介绍,最简单如下图新浪的版本特性介绍 由于图片是全屏展示且是左右滑动,大多数情况开发者会选择使用scroll ...
- delphi 各新版本特性收集
delphi 各新版本特性收集 http://www.cnblogs.com/dreamszx/p/3602589.html
- 阿里云正式上线移动直播问答解决方案,助力APP尽情“撒币”!
2018年伊始,互联网圈就刮起了一阵"大佬狂撒币,网友喜答题"的热潮.以映客芝士超人等为代表的直播问答平台,通过答题分奖金的互动模式,迅速引爆网络热点.随后,多个直播和视频平台也上 ...
- 开发者了解NET的15个特性
NET 开发者了解的15个特性 本文列举了 15 个值得了解的 C# 特性,旨在让 .NET 开发人员更好的使用 C# 语言进行开发工作. ObsoleteAttribute ObsoleteAttr ...
- Java 13 特性解读
Java 13 特性解读 转 https://blog.csdn.net/bjweimengshu/article/details/100978383 2017年8月,JCP执行委员会提出将 ...
- Java 15 新特性:文本块
大家好,我是DD,今天继续来学点Java的新特性! 假设有这样一个场景,我们需要做一个工具.用来自动生成项目文档,文档可以通过浏览器查看,所以最后产出物肯定是一堆html文件.为了让这些html文件更 ...
随机推荐
- docker 容器卷
创建各种卷 [root@docker ~]# docker volume create mqy-vo101 mqy-vo101 [root@docker ~]# docker inspect mqy- ...
- Bulk RNA-seq 基本分析流程
目的: 对illumina数据进行处理,利用 RNA-Seq 发现新的 RNA 变体和剪接位点,或量化 mRNA 以进行基因表达分析等.对两组或多组样本的转录组数据,通过差异表达分析和对所发现的差异表 ...
- VirtualBox扩容CentOS-7虚拟机磁盘
1.背景描述 如上图所示,根路径"/"所在的文件系统已没有可用的磁盘空间,需要扩容磁盘. df -h 2.VirtualBox操作 2.1.查看当前虚拟磁盘的大小 如上图所示,点击 ...
- 【Vue】Re06 组件化
将一个应用页面拆分成若干个可重复使用的组件 一.Vue的组件的使用步骤: 1.创建组件构造器 2.注册组件 3.使用组件 <!DOCTYPE html> <html lang=&qu ...
- P6764 [APIO2020] 粉刷墙壁
思路: 本质上能进行的操作就是我们算出从第 \(i\) 块砖开始,连续刷 \(M\) 块砖,是否有承包商可以刷出期望颜色. 那么设 \(f_i\) 表示 \([i,i+m-1]\) 是否合法,那么就变 ...
- 自然语言处理:通过API调用各大公司的机器翻译开放平台
国内大公司做机器翻译做的比较好的有讯飞和百度,这里给出这两个公司机器翻译的开放平台API的介绍: 讯飞开放平台: 链接:https://www.xfyun.cn/doc/nlp/xftrans_new ...
- VcXsrv: 一个好用的Windows X11 Server
windows10没有系统自带的X11服务器,使用了几款X11的windows下X11服务器软件后发现了一个好用的软件--VcXsrv. 下载地址: https://sourceforge.net/p ...
- 硬盘测速工具中的队列深度是个什么东西——CrystalDiskMark中的Q32T16是什么意思
================================ 最近有使用CrystalDiskMark给自己的硬盘做测速,发现有个名词自己不是很理解,就是像Q32T16这样的词: 在网上找了好久, ...
- ubuntu 16.04 安装Python3.8虚拟环境
virtualenv为应用提供了隔离的Python运行环境,可以解决不同应用间多版本的冲突问题. virtualenv会把用户指定版本的python复制到虚拟环境下,并修改相关的环境变量,使得pyth ...
- 在 macOS 上安装 fish
安装 fish brew install zsh 将默认 shell 切换为 fish 由于 Homebrew 安装的 fish 不在标准 shell 列表 /etc/shell 里,因此要先将 fi ...