由PG分会发起的“PostgreSQL ACE深度访谈”栏目,旨在挖掘ACE们对数据库行业的深度洞察,分享他们对行业发展的思考和个人感悟,对广大PGer们具有实际借鉴意义。
以下正文,转载请注明出处,并获得作者允许。
我还算一个比较有意思的人,在工作和生活中总能充当一个段子手,给大家带来一点欢声笑语。
说起爱好,以前喜欢打乒乓球、打篮球,吃饭、睡觉、唱歌(自称小许巍)。我曾以为我会成为美食家,后来发现只是单纯的爱吃而已,球是不打了,不过吃饭的爱好一直在坚持,所以我逐渐成为了一个比较有趣的胖子。不过,最近几年我最大的爱好就是学习研究PG了,对PG很着迷(这么讲吧,刷美女短视频和研究PG我会选择后者),经常研究PG问题或者代码不知不觉就到凌晨了。
我的家乡是陕西省首批公布的省级历史文化名城-凤翔,也称西府凤翔,古称雍,是周、秦发祥之地、嬴秦创霸之区、华夏九州之一。相传秦穆公之女弄玉善于吹笛,引来善于吹箫的华山隐士萧史,知音相遇,终成眷属,后乘凤凰飞翔而去,唐时取此意更名凤翔。凤翔历史悠久,先秦19位王公在此建都294年,是秦始皇加冕、苏轼初仕之地。千年园林东湖,西府“三绝”,是民间工艺美术之乡,享有“青铜器之乡”和“西凤酒乡”的美誉。
东湖胜景(图片来自网络)
对家乡的这段介绍来自某百科,我觉得整体还是不错的。补充一些,当地特色美食有擀面皮、豆花泡馍、腊驴肉等。非物质文化遗产有泥塑、木版年画、皮影、剪纸等。当然还得再介绍下有着四大名酒之称的西凤酒,西凤酒属凤香型大曲酒的典型代表,其主要原料为高粱和泉水。制曲原料是大麦和豌豆。其酿制方法不同于一般白酒,西凤酒利用土窖和大型容器-酒海。西凤酒色泽清澈透明,香气清芬,酒味醇厚、清洌。1952年第一届全国评酒会将陕西省西凤酒厂生产的西凤酒评选为中国四大名酒之一。欢迎大家去我的家乡打卡。
我目前没有个人公众号,不过我定期会在PGfans问答社区,和开源软件联盟PostgreSQL分会公众号发布一些文章。
最近想给大家推荐《快速掌握PostgreSQL版本新特性》这本书。以前我们查看版本新特性主要是去阅读Release Notes,不过信息不够全面且比较零散。这本书全面总结了10-16各个版本的新特性,并且给出了一些详细的验证示例。我觉得无论是DBA还是业务开发人员都值得学习下这本书。
和大多数人相比,我算是比较幸运吧,完成学业后第一份工作开始就是PG相关的,直到现在一直是与PG相关,快要10个年头了。当然中途也接触到了Oracle,以及常见的几种NoSQL,不过重心一直在PG。
这里讲个有趣的故事,当初差点和PG无缘了。毕业后去公司报道的第一天,leader让导师给我们制定下学习和工作计划。您猜怎么着,导师直接甩给我一本《PostgreSQL数据库内核分析》,我翻了几页直接就懵了,当时心里一万个XXX。当然导师是太忙,想着先随意给我一本书看看。但是这对于当时的我来说难于登天啊,心想我还爬不利索呢,您就让我去跑个1000米试试,这不是劝退吗。我就硬着头皮看了一下午,最后我的leader看到了,调侃了下我导师,安排好了合适的计划和内容。同时leader给我多安排了几位导师,有擅长SQL的,有擅长C代码的,从此我的PG生涯拉开序幕了。
所以算是一种缘分吧,从开始工作就使用PG了。
没使用过,当时有同学研究过数据库,数据库方面的书籍不少。我看到过《PostgreSQL9.0性能调校》这本书,只是听同学说PGSQL是一个不错的关系型数据库。当时我并没有专门学习,那个时候还热衷于学习专业相关的单片机嵌入式这些内容。
虽然不是从事专业的内核开发,但我认为作为DBA还是要具备读懂代码的能力的。
大学中学习的C语言基础,以及嵌入式等这些知识,对我来说意义重大。有了这些基础知识储备,再加上工作中积累的一些经验,遇到疑难杂症需要深入原理分析时,大多时候可以分析源代码来解决问题,或者是优化内核逻辑。
最开始使用的是基于PG9.2.4的某国产数据库,接触原生PG是9.6版本。最让我印象深刻的地方是支持了wait_event等待事件的特性,在此之前,我们对于一条sql或者一个进程的执行状态并不能明确抓取到,这对于我们分析问题,以及整体性能调优来说是很不方便的。
有了等待事件之后,每个进程整个生命周期每个阶段都有对应的等待事件来表明当前进程所处的状态。只需要查询系统视图就可以跟踪完整的等待事件,无疑使用户的使用体验更友好,更白盒化,更方便快捷。
目前是一名PostgreSQL DBA,负责产品架构演进和运维管理相关工作。
1) 定期在pgfans、PostgreSQL分会公众号发表文章;
2) 基本每年都会参加中国PostgreSQL数据库生态大会进行分享;
3) 我没有直接给社区贡献代码,自己平时喜欢瞎琢磨,偶尔会改一些内核逻辑玩玩。
4) 不过巧合的是,修改过的代码中有一些社区后来都有修改:
PostgreSQL 14版本支持crash后清理临时文件;
pg_cron 1.6.1 当cron调度进程被终止后自动拉起。
PostgreSQL 17增量备份恢复功能。
查看代码常用sourceinsight ,编辑vim vscode,调试gdb。
这个要针对性看待,当然是我个人看法。
对DBA而言,需要做好数据库架构设计,做好资源监控和管理,提升数据库系统稳定性。同时要对业务相对熟悉,要有扎实的PG理论基础,扎实的系统运维能力,较强的故障分析处理能力。当然最好可以读懂源代码。
从事业务开发,除了业务coding的能力,PG这里还要掌握好语法特性,做好库表设计,最好可以有一定的分析和优化SQL的能力。
从事产品设计,除了解PG数据库特性之外,还需要紧跟国内外PG生态以及社区发展来制定产品未来的发展方向,把控产品演进的节奏。
从事内核开发,在我看来门槛还是不低的。除了要精通数据库某些原理,C/Cpp等开发语言基础要硬,数据结构与算法,操作系统底层原理,网络协议,存储设备等等要非常熟悉。以及更底层cpu指令等这种level的知识储备。
当然要成为某个领域的专家,门槛还是比较高的。这里不太好描述,列举几位大家熟知的专家,从他们身上可以找到答案。
熊灿灿(灿神) 冯若航(冯董) 周正中(德哥) 吕海波(vage)
最期待64位XID
遇见难题先主动思考,尝试从原理层面分析解决问题。
超出能力范围的,很久都没自主解决的,向别人请教。沉淀下来对自己会有很大的提升。
有空就会阅读,还关注pgsql-bugs
持续地学习,多参与分享,热衷于推动PostgreSQL的发展。
目前发现在高校合作方面,一些商业化公司做的不错,几个比较知名的数据库厂商和部分高校有项目合作。但是开源PG不多,期待PG分会后期可以多进行校园宣传,成立兴趣小组,专项实验室,让学生在校园就可以接触到PG,为PG或者国产数据库做好人才储备。
本文分享自微信公众号 - 开源软件联盟PostgreSQL分会(kaiyuanlianmeng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。