PostgreSQL 16全新改动回顾

首先

喵。我是一个以兴趣为驱动的创作者。

这篇文章是PostgreSQL 16全猫咪圣诞日历2022的最后一天的文章。
这次,我打算参加全猫咪圣诞日历活动,写一些关于参与的动机、准备和遇到的困难等等。

尽管最后阶段稍微有一点点的笑料不足感,但总算成功完赛了!

引发和动机

篠田的虎卷

如果你是在使用PostgreSQL的人,尤其是那些想要了解新版本功能的人,可能很多人都会利用到「篠田の虎の巻」系列。在10月22日,PostgreSQL 15 GA的新功能验证结果也已经公开。这个系列不仅包含了新功能,而且更令人惊讶的是,在5月底发布了beta1版本时就已经公开了beta1版本。

在 PostgreSQL 15 的发布说明和虎纹卷中一起欢声笑语地讨论。

所以,在今年夏天的时候,以这个基于beta1版本的基础,我们举办了3次“PostgreSQL 15发布说明与讨论会”的在线会议,进行了3次开会。

    • PostgreSQL 15のリリースノートと虎の巻でわいわい言う会 ツイートまとめ

 

    • PostgreSQL 15のリリースノートと虎の巻でわいわい言う会(続)ツイートまとめ

 

    PostgreSQL 15のリリースノートと虎の巻でわいわい言う会(続2)ツイートまとめ

在这次会议中,我问篠田先生在beta版发布后不久能否发布虎卷。他回答说,他从冬天开始撰写,随时根据提交日志等进行创作。

嗯,我明白了。夏天的时候我就是这么想的。

到了十月份,PostgreSQL 15也成功发布了,接下来可能会在5月左右开始写有关PostgreSQL 16的内容,我这种轻松派的人也可以早早地写一些PostgreSQL 16的相关内容吧?

准备

大约5年前,我做过全系列的PostgreSQL 10项目,但由于准备不足,我在12月份遇到了相当大的困难。通过那次经验,我深刻地认识到要做好”全部ぬこ”,必须做好充分的准备。

所以,这次我相对做了比较充分的准备。

十月

今年的PostgreSQL Conference Japan 2022将于11月11日举行,很早就知道没有闪电演讲大会,所以从十月开始可以进行准备。
(可以将用于闪电演讲大会的准备时间用于圣诞降临日历的准备)

首先要确认Commitfest页面。
Commitfest是一个以两个月为单位划分时间段的开发循环,期间将提交和审查下一个版本中需要进行修改的代码(可能需要看看藤井先生的幻灯片来了解更多信息),在这段时间内被确认通过的内容将会进入下一个版本。

所以,由于与Commitfest 2022-11和Commitfest 2022-01相重叠,我将从这里开始寻找灵感,作为Advent日历的时间。目前在十月份,我会先在一个文本文件中记录Commitfest项目名称和链接的备选项,而不会在我的Qiita文章中写出来。

十一月

今年我犯了个大错,忘记买PostgreSQL Conference Japan 2022的交流晚宴门票,无法参加晚宴真是后悔不已。因为听说在晚宴上有个闪电演讲?如果我参加了晚宴,就能在闪电演讲的场合宣布“全部用猫完成”了……与此无关,我每天都会检查Commitfest 2022-11的页面,记录下可能成为素材的内容。

在Commitfest项目中,我们要选择满足以下三个条件的文章:

    • ステータスがCommitedのもの

Needs Reviewとかだとパッチを当てて環境駆逐して・・・とか難易度(というか面倒臭さ)が一気に上がってしまう。

自分が理解できるもの

当然、自分が理解できないと記事掛けないし。

記事にしやすいもの

TopicがRefactorとかDocumentとかTestとかは、やっぱり記事にしにくい。

由于11月已经开始了,我打算开始存储一些Qiita文章。
尽管我听说Qiita的草稿保存数量有限,所以我会在HackMD上创建草稿原稿作为替代。
我还会先考虑一些模板,比如“开始”和“概述”。

到了11月下旬的时候,我注意到有一件事情:
笑话明显不够多啊……

满足上述三个条件的修改项目比预期的少!到11月最后一周时,文章库存有9个+可能无法完成的项目有3、4个。相对于25个圣诞日历的位置,大约只有一半。这可能能行吗?
虽然我非常犹豫,但是我相信在12月之后还会有更多的项目,然后就会有办法应付!虽然有点强行,但我在11月底前提交了项目。

圣诞倒数日开始啦!

十二月

首先,预约发布以填满九个项目的储备,并创建九天的缓冲区。
另外,由于已经进入了12月,接下来我会每天检查2022年1月份的Commitfest。

到12月7日为止,我发现仅用Commitfest项目就无法完成条目的创建,感觉有些勉强。所以在最后三天,稍微取巧,填写了一些与系统目录的整体变更、PostgreSQL参数的变更以及这篇故事有关的内容,做了一些妥协。
然后,在接下来的几天里,发现有几个看起来比较容易写的项目,到12月15日左右,似乎能够填满所有的空白了。
到了这一步,只需编写文章即可。

痛苦之处

没什么好玩的了!

如果在三月份有一个圣诞节日历,可以提前准备好三次Commitfest的话题,可能会轻松许多。在这个时候只用PostgreSQL新版本的话题来填满整个圣诞节日历真的很艰难。

这个英文邮件列表很痛苦。

在Commitfest的页面上,虽然有标题,但并没有写任何详细内容。
如果想了解详细信息,只能从Commitfest页面上的邮件列表链接中追踪内容。

    • 英語わからん(DeepL先生とGoogle翻訳副講師さまさまです)

 

    • 長い(ものにもよるけど、延々メールでの議論が続く項目もある)

 

    まとめがないスレッドも多い(「エイリアン vs ジョーズ」じゃないけど もう結果だけ教えろ! という気分になる)

意外的是有很多要验证的版本

在验证过程中, 最终我们准备了以下版本。

    • PostgreSQL 15 beta

 

    • PostgreSQL 15,0

 

    • PostgreSQL 15.1

 

    PostgreSQL 16-devel

我們通常會比較PostgreSQL 16-devel和PostgreSQL 15.1,因為這是最常見的比較對象。這是因為在Commitfest項目的”Bug fix”主題中,有些修復在PostgreSQL 15.0時已經被實施了。這一點還需要根據提交的時間來確定。

另外,不得不提的是,由於PostgreSQL 16-devel仍在開發中,它的目錄版本經常變動。這導致之前進行驗證時使用的數據庫集群無法使用,因此我們需要經常重新生成數據庫集群。喵~

验证结果有点微妙

在与性能改进相关的项目中,有几个项目,但在邮件列表的讨论中看不到效果(有些情况下,与 PostgreSQL 15 beta 版相比,PostgreSQL 15.0 或 PostgreSQL 16-devel 的速度更慢),这让我相当困扰。
首先要怀疑的是我的验证环境。
然而,即使我改变了各种验证环境和测量方法,也无法得到满意的结果,所以这次直接提交了……喵~

“对于有见解的评论者,非常感激!”

从有经验的人那里看到了我写的这篇广告,并接受了一些建议和批评进行了修订的几篇文章。
最大的修订在第22天的PG16:外部表格的快速复制命令一文中。
在最初发布的版本中,内容是“进行了测量但没有效果……”,但是根据指摘,重新构建和重新测量了测量环境,确认了明显的改善效果,因此修订了文章并重新发布了。

写的结果彻底破灭了!

在第一天,我写了一篇关于新增了定义好的角色pg_vacuum_all_tables和pg_analyze_all_tables的文章(PG16: 允许在关系上授予VACUUM和ANALYZE特权)。但是在12月19日的另一个提交中,它们被合并到了pg_maintain角色中,pg_vacuum_all_tables和pg_analyze_all_tables角色就不再存在了!这种事情也是有可能发生的。
嗯,正因为有这样的情况,追踪开发中的版本也是一件有趣的事情。

我沒有時間!

由于进行改造项目的调查、验证和将其转化为Qiita文章,所以即使到了12月,自然也会从生活中占用时间。

在我自己的情况下,早上的日常模式是散步(因为我仍然是一个Pokemon GO的用户),然后吃早餐,并在家办公。其实,早晨是我觉得自己头脑最清醒的时候,所以我决定将早晨的散步时间用于参加圣诞节日活动。虽然这样做会导致我不再散步,对健康不利。

在休息日,自然而然地将时间花在了圣诞节倒数日活动上。所以,不能去远处吃拉面…(虽然可以在附近吃)

最后:得到了什么

我认为通过今年的猫咪陪你过圣诞节活动,我在我的方式下得到了一些东西。

    • PostgreSQL 16の機能の(ほんの一部をだけど)先行して理解できた。

 

    • PostgreSQL Commitfestの歩き方が少しわかってきた

 

    毎日締切があるような連載のための準備や進め方

并且,即使是PostgreSQL的轻松派,也终于创造了一个有关PostgreSQL开发版的话题,可以写出25篇文章,这取得了很大的成就。

希望看到更多人閱讀後會心想「哇,我也能自己做一個完整的聖誕節倒數月曆!」。

有时候在开发过程中可能会发生还原。我觉得在PostgreSQL 15中,一些与JSON相关的功能添加可能被还原了。
bannerAds