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篇文章,这取得了很大的成就。
希望看到更多人閱讀後會心想「哇,我也能自己做一個完整的聖誕節倒數月曆!」。