前言
武侠世界,9 是个神奇的数字,武学秘籍有《九阳真经》《九阴真经》,凡文治修炼到第九层,闯荡江湖将独孤求败,快意恩仇。以文昌塔为喻,我把学习 PG 划分九层,心愿能够对玩转数据江湖的同学,有所参照,逐层递进,直至达到高手行列,闯荡职场,熟能生巧。
第一层 初识 PG,宽阔心怀。
第二层 装置应用,入手操练。
第三层 相熟性能,提纲挈领。
第四层 纯熟操作,得心应手。
第五层 透视性能,探索原理。
第六层 问题解决,性能优化。
第七层 读懂源码,疾速定位。
第八层 编写源码,欠缺优化。
第九层 死记硬背,自在驰骋。
第一层:初识 PG,宽阔心怀
数据库不只有 Oracle、DB2、SQLSERVER,还有 PostgreSQL(简称 PG),PG 是最弱小的开源数据库,PG 开源敌对,学习 PG 能够从事 DBA/ 利用开发 / 零碎内核开发等工作,而且会有很大的施展空间,应用 PG 能够为企业提供无效的数据库治理,也能够自主可控、节约老本。当今职场,多懂几个数据库,会让咱们有更多的机会。
初识 PG,次要是学习认知 PG 的起源倒退,次要版本个性,应用领域;理解国内 PG 社区组织、资源、动静,与中国 PG 分会、PG 社区建立联系,踊跃互动,获取学习资源,尝试分享,展现自我。
第二层:装置应用,入手操练
“装置部署、服务治理、体系结构、初始化配置、数据库对象治理”,这是 PG 的利用治理根底,DBA 要会,利用开发也要会。当然两种角色关注重点稍有不同,譬如 DBA 关注架构部署、运行稳定性和高效性,而利用开发更多的是把握数据库对象的创立及治理。
第三层:把握要点,提纲挈领
PG 作为关系型数据库承当着治理企业数据的重任。性能、性能很重要,稳定性更重要,这也是作为 DBA 首要思考的问题。PG 数据库倒退 30 多年,国内、国内的泛滥利用案例表明稳定性可以信赖。关注学习与稳定性相干的知识点,可能将 PG 的稳定性施展的更好:
PG 稳定性要点:
内存配置
日志配置
磁盘治理
并发管制
过程管制
……
PG 的功能强大、繁多,能够系统化、模块化的选择性学习。譬如 PG 有地理信息数据处理性能(GIS),临时用不到能够先放过,除非很有志趣。DBA 和利用开发人员能够依据工作须要深刻学习不同性能要点。
PG 性能列表:
安全控制
基准测试
监控性能
审计性能
并发管制
并行处理
长期表
触发器
函数、存储过程
执行打算
物理连贯
数据缓存
物化视图
分区表
主从流复制
逻辑复制
拜访内部数据
……
第四层:纯熟操作,得心应手
学习了稳定性要点、性能列表后,PG 根本能够用来服务于工作了。通过一直的自我练习,满足工作业务需要,会看到本人的程度会一直的提高。
第五层:透视性能,探索原理
PG 性能点繁多,独特的性能实用于不同的业务场景,而且随着 PG 版本的更新迭代,重要的性能点也会一直失去优化,无论是应用上的便捷性还是性能的加强,无不体现着源码内核奉献着的智慧与谋求:使 PG 不断完善,更好的服务于业务。
譬如分区表,PG V9 版本中是通过表继承 + 触发器的形式实现,因触发器自身的限度,数据的插入性能并不高;PG V10 实现了内置分区表,创立的分区本质上也是一般的表构造,从而治理分区不便,数据插入效率得以进步;PG V11 减少哈希分区、默认分区、反对更新分区键等,欠缺了分区的性能。
探索原理能从外部机理深刻了解,面对问题也能透过景象看实质,发现问题的诱因是使用不当还是零碎 bug,从而能更好的解决问题。
第六层:问题解决,性能优化
习得第五层是为了更好的应用 PG,遇到问题能够疾速定位、剖析解决。解决问题须要平时多积攒整顿,一方面是技术群、网站论坛抛出的问题,被动思考、整顿,学习总结,以备不时之需,有些问题平时不常常遇到,但一旦呈现,之前没有解决过会比拟辣手;另一方面是工作中的问题,通常会有应急解决方法,问题解决后,尽量造成问题剖析报告,对有些问题抉择深度思考、探讨,探索根本原因,进而归档或分享,这都是贵重的教训。
性能优化始终是数据库大脑的重点,也是运维、开发者工作价值的体现。通过对底细的摸索,可能拨云见日,配合相干工具通过配置或 SQL 的优化,来晋升数据库的拜访性能。
第七层:读懂源码,疾速定位
大学计算机相关业余的同学,个别会有 C 语言的课程,C 语言能够算是世界上最平凡的编程语言之一,能够用来编写 UNIX/Linux 的内核,也能够实现 Python/Ruby 解析器、Apache 中间件等,很多关系数据库都能看到 C 语言的影子。
PG 源代码也是用 C 编写,尝试学习源码是件有挑战性的事,就如同驾驶手动挡汽车,如能操作纯熟,必能领会其中的乐趣。不必任何解读,就能疾速定位到源代码间接了解 PG 的工作逻辑,帮忙咱们更好的应用 PG。
第八层:编写源码,欠缺优化
编写 PG 源码是有志于从事零碎编程工作同学的谋求或方向,PG 的弱小凝聚了世界各地 PG 内核编码工程师的智慧,遗憾的是,PG 国内社区的贡献者档案中还没有呈现中国人的名字。当然,国内也不乏优良的零碎编码者,期待通过大家独特的致力,将会涌现更多、更优良的零碎编码工程师呈现在列表中!
PG 国内社区贡献者列表链接:https://www.postgresql.org/community/contributors/
第九层:死记硬背,自在驰聘
学习任何技能,最终的境界是融汇贯通,以无招胜有招。
无论大家从事 DBA、DEV 或者零碎内核开发,通过无效的办法,坚定不移的积攒都能够达到这一层,自在挥洒。
后记
以上内容只是在 PG 的学习角度做的一些总结,用好 PG 还须要有良好的零碎、数据库原理常识,这也是根底,犹如地基,地基稳,宝塔立。PG 学习的九层宝塔,是为了更形象具体的形容,学习过程不是说必须按此一层一层进行,大家能够依据本人趣味或工作须要有所抉择的发展学习。
最初,说两点学习的办法领会:
第一:多交换、多浏览、多练习。
多与前辈交换,迷信问答,多浏览优良书籍,本人多做试验。书是人类提高的阶梯,学习最好的搭档,能够依据学习阶段或工作须要抉择浏览。
参考书目
《PostgreSQL 修炼之道 - 从小工到专家》
《PostgreSQL 实战》
《PostgreSQL 指南:底细摸索》
《PostgreSQL 服务器编程》
……
第二:投资学习,向导师借力。
培训是件业余的事,优良的培训导师能够帮你疾速把握要领、修改办法;帮你节约工夫、能更疾速无效的晋升技能;还可能提供更多的资源,譬如良好的学习环境、就业机会、技术支持等,人生多一良师,也是一大幸事。
读罢本文,想必有读者会问我是几层,我只能这么答复您“路漫漫其修远兮,吾将上下而求索”。如果本文对您有所帮忙,也不枉费脑力一场;如果您有不同意见也能够借 PG 分会平台发表或进一步交换。
更多精彩内容,请关注以下平台、网站:
中国 Postgre SQL 分会官网公众号(技术文章、技术流动):
开源软件联盟 PostgreSQL 分会
中国 Postgre SQL 分会技术问答社区:
www.pgfans.cn
中国 Postgre SQL 分会官方网站:
www.postgresqlchina.com