数据库 频道

为什么DBA需要数据库厂商的数据库概念文档

前几天和一个做国产数据库的朋友讨论文档的问题,他问我最需要什么文档。我提出了两个文档《XX数据库概念手册》和《XX数据库完全参考手册》。

数据库完全参考手册的重要性毋庸置疑,当我对数据库的使用存在问题的时候,就需要翻阅这个文档来查找答案,而我也一定能在这个文档中找到所需要寻找的答案。可能有些朋友会说了,这有什么难的,哪个数据库产品没有参考手册啊。确实是的,搞一个名字叫《完全参考手册》的文档并不难,而难的是写出一本真正的《完全参考手册》。完全参考手册与其他手册存在交叉引用和交叉参考的地方,一本优秀的完全参考手册能够作为其他文档的优秀参考书,也能够成为知识体系的全面指引。不过我看到过的国产数据库,目前都没有这样的文档提供,哪怕提供了。类似的数据库参考手册,里面的内容也是不完整的,完全当不起“完全参考手册”中“完全”这两个字。

另外一本DBA继续国产数据库提供的手册是《数据库概念手册》很多Oracle DBA看到《数据库概念手册》的时候,一定会想到《Oracle Concepts》,这本有点追求的DBA一定要阅读几遍的官方文档,是我以前给一些刚入门或者想提升能力的DBA推荐的书单里的第一本书。上星期在微信群里和网友讨论技术问题的时候,有人问我,为什么我能够从Oracle的原理入手去分析问题。我说这三十年,O记的很多算法已经被DBA们研究透了。当时有个朋友觉得不可能,O记怎么可能公布自己的核心算法呢。其实我说的“算法”是要打引号的,O记确实不可能把具体的算法公开发布,不过作为运维人员来说,我们不需要了解具体的算法实现,只需要了解一些粗略的算法就可以了。而这些知识的最初来源就是《Oracle Concepts》这本书。《Oracle概念》把Oracle数据库的一些基础概念和算法原理介绍得十分详尽,读者读完这本书,对Oracle的一些内部机理就有了初步的认知了。以后再去做数据库运维的时候,就不仅仅限于表象去做分析和处置了,能够根据Oracle的一些内在机制原理去分析问题,找到问题存在的根因,从而多了一些解决问题的路径。比如说一个数据库系统的CPU资源不足,可能大家都会通过SQL优化去解决这些问题,不过如果当前SQL无法优化,或者说开发商需要几个月才能完成优化,那么这个时候我们就对这个系统束手无策了吗?

答案肯定是否定的,在很多时候,我们还可以通过一些其他手段来缓解CPU资源不足,从而暂时解决数据库存在的问题。比如说如果存在十分严重的热块冲突,或者数据库缓冲区的各种闩锁/轻量级锁资源/SPINLOCK等出现了问题,如果我们能够发现这个问题,或者根据数据库的基本原理找到这些问题点,那么我们就可以通过调整一些操作系统、数据库参数,调整共享缓冲区的配置等来缓解这些问题。

这些年传统企业的数据库架构受到互联网企业的很大的影响,企业领导也认为互联网企业都能做好的事情,我们为什么做不好。实际上传统企业在IT系统建设和运维方面与互联网企业的差距是十分巨大的,完全照搬互联网企业的工作方法是行不通的。互联网企业的完善的研发与运维体系使得他们可以把重点放在应用和SQL优化上,用这些优化来解决数据库存在的问题。而对于某些传统企业来说这种方法不总是有效的。

前几天和一个客户交流的时候,他们说目前他们系统负载最大,经常出现CPU资源不足的数据库是“业扩计量”业务的数据库,这个数据库只有不到5TB,比起这套系统里最大的数据库来,只有1/10的库大小,不过因为业务变更频繁,业务部门几乎每天都在搞业务创新和管理创新,几乎每个星期都有新业务发布。这就导致DBA找到的TOP SQL被修复的量远远赶不上新的烂SQL上线的量。为了确保新业务创新不受影响,不让烂SQL上线,不让存在缺陷的应用上线的应用上线合规性检查,就成为了一个摆设。而那个数据量高达45TB的数据库,因为业务变更没那么频繁,自从换了全闪存储后,就一直比较稳定,不怎么出问题。

面对Oracle数据库,因为我们了解其大体的概念,因此我们还有除了SQL优化之外的武器可以使用。而面对万花齐放的国产数据库,DBA的火力就完全哑火了。我曾经看过开发和DBA之间的争吵,研发主管十分轻蔑的说:“你们DBA除了能找一堆SQL来让我们改,还能做点什么?”。DBA也无奈啊:“你们研发选了这个破数据库,里面出了啥问题也没个地方去分析,我找谁讲理去”。

如果我们的国产数据库厂商能够提供一本《数据库概念手册》,那么就可以让DBA有更多的武器去运维数据库,也可以让用户把你的数据库产品用得更好。这种两全其美的事情,为什么数据库厂商不愿意去做呢?在一次我和一个数据库厂商的交流中,他们也表示了无奈:“我们公司里能够完全吃透数据库原理的人都不多,哪有人力能投入到文档编写里啊!”,甚至很多数据库企业的文档是外包给人力资源外包企业完成的,这些文档的质量都无法保证,更不要说写出一本讲自己数据库概念的手册了。

目前的国产数据库里,opengauss提供了一本不到一百页的《特性描述》,里面的少量的描述可以被用于理解opengauss的一些概念,OceanBase提供了一本十多页的《了解Oceanbase数据库》,Polardb的《Polardb架构解读》虽然只有55页,其质量在国产数据库里还算是好的了,覆盖的面依然过窄。Tidb的《Tidb in Action》中有专门的一个章节《TIDB 原理和特性》,算是国产数据库里对原理讲的比较清晰的了,不过比起《Oracle Conceps》来,还是差距不小。

最后我还是呼吁一下广大的国产数据库厂商,求求你们为我们这些可怜的DBA好好的写写手册资料吧。

0
相关文章