学习PostgreSQL内核
发现一个学习PG内核的资料,以作记录。
首先,从愿景开始,阅读Postgres的设计:了解PG与其历史的区别:复杂对象、用户可扩展性、活跃的数据库设施,同时保留关系的概念。
https://dsf.berkeley.edu/papers/ERL-M85-95.pdf
其次,浏览下Bruce Momjain的“Internal”:这些往往有些老,Bruce已经有段实际没有做深入的核心工作了,但他是一位专业的老师和解惑者,所以他对了解PG很有用。在2018年关于PG新添加的功能研究中,Stephen Frost以类似的方式介绍了代码库。
https://momjian.us/main/presentations/internals.html
https://www.youtube.com/watch?v=51yez5gBFmI
第三,考虑花些时间阅读“PG内核原理”,这是对PG子系统非常详细的介绍,包括header结构和数据流。和任何一本书一样,可能偏离了当前PG的细节,但我所知道的没有其他资源甚至视图以这种粒度解释内部结构:
http://www.interdb.jp/pg/
第四,源代码本身就是一个了不起的资源,头文件和函数描述中的注释非常好。PG社区令人难以置信的详细和严格的源代码审查过程,不仅期望有好的代码,而且还期望有好的文档记录代码的作用。
会议演讲是一个不断变化的目标,因为他们倾向于关注事物的前沿,但有一些社区成员定期就他们的核心主题发表研究,这必须解释事物是如何运作的,以便将事物情境化。
不幸的是,PG会议有一个习惯...不录用!所以网上比较少。Tom Lane在PgCon 2011上的多会话查询计划非常突出:
https://www.pgcon.org/2011/schedule/events/350.en.html
核心技术内容最好去的会议无疑是PgCon:https://www.pgcon.org/2022/
1)Andres Freund:在完成极其艰巨的技术工作的同时,仍然抽出时间来解释他在做什么:
异步IO:https://www.youtube.com/watch?v=CD0w3gWBF7s
可拔插表存储:https://www.youtube.com/watch?v=mTfvA9EQIz8
Postgres JIT 2018:https://www.youtube.com/watch?v=-rpsboLc8wU
Postgres JIT 2017:https://www.youtube.com/watch?v=v3NAJOFi2jU
2)Robert Haas是EDB的CTO:
并发DDL:https://www.youtube.com/watch?v=kbtkKh9B7eo
什么是Plan:https://www.youtube.com/watch?v=YH0zRk7NSfE
3)Amit Kapila,每次发布都在悄悄地完成令人印象深刻的工作
Hash索引:https://www.youtube.com/watch?v=SCaBmBbLTPQ
4)Melanie Plageman,他对真正困难的话题做出了令人深刻的解释
PG规划器简介:https://www.youtube.com/watch?v=j7UPVU5UCV4
work_mem:https://www.youtube.com/watch?v=mA8ODr4mAwo
5)Peter Geoghegan,他直接进入基金会并建立起来(不幸的是,他给出的 btree 演讲,这是一次绝妙的表演,不在网上,也许这个 nbtree 演讲是一个可以接受的替代品)
nbtree:https://www.youtube.com/watch?v=p5RaATILoiE
当然,还可以阅读pgsql-hackers邮件列表和commitfest,帮助了解贡献文化,并了解正在进行开发的地方;还有我们前期说的关于PG内部机制的书“PG14技术内幕”:
https://postgrespro.com/community/books/internals
原文
http://blog.cleverelephant.ca/2022/10/postgresql-links.html