数据库好用不好用和鞋跟不跟脚一样

数据库是企业数字化建设进程中最重要的IT基础设施之一。企业的IT部门必须与其使用的数据库建立起十分融洽的关系,一旦对于某种数据库的掌握程度达到了某种程度,在某种数据库上积累的运维知识和经验足够丰富的时候,你会觉得这个数据库用起来也就得心应手了。

昨天关于SQL执行毛刺分析的问题,应该不少DBA都遇到过,有同学留言说不外乎三种情况:

在一个维护得比较好的数据库系统里,1发生的可能性不大,2是很常见的一种可能性,不过叶节点严重分裂往往会引发比较全面的INSERT变慢,不会在几万次INSERT里只有1-2次毛刺,少量的分裂影响的时间可能是几十毫秒级别的,不会那么大。3也有可能,但是这种情况出现,往往会有一批INSERT会出问题。表空间扩展都是几十到100毫秒这种级别的,一旦有影响,对于1000 TPS的系统来说,可能不会只有1-2条SQL有毛刺。这种毛刺的情况往往是比较难定位和优化的,是多种因素叠加的结果,甚至有些情况就是数据库正常的行为根本无法优化。由于绝大多数用户的监控运维工具还是以传统的网管模式建设的,并没有针对数据库做数字化建模,因此一旦遇到问题要分析的时候,往往缺乏质量较高的数据。因为要在几十万次INSERT中找出几次故障的原因,需要十分精准和丰富的监控数据。

今天我们换个话题,数据库领域总是充满了对某种数据库好不好,哪种数据库更好的争论。有些同学还特别热衷于这种辩论,就像华山论剑一样,必须评出个五绝来才行。我经常和不同的数据库厂商、数据库用户接触,对于同一种数据库,不同的用户都会有截然不同的看法,甚至是处于两个极端的看法。在二十多年前,针对Oracle、DB2、SYBASE、INFORMIX谁更优秀的讨论也很多,只是那时候互联网、自媒体没有那么发达,也没有微信群和微信公众号,所以这些争论没有现在那么热烈而已。

我经常听到用户说:“MySQL是我用过的最好用的数据库”,我想大概率这是他真实的感受,而不是吹嘘。也有可能另外一个人会说:“MySQL是他这辈子用过的最烂的数据库,没有之一”。这句话不一定是真的,不过有可能也会反映出他的某些感受。目前他可能正在使用MySQL,并且体验不好。

不管怎么说,上面的几位同学只是表达了他的观点,而并非客观事实。数据库好还是不好,本身就不是事实,而是观点。既然是观点,就有立场、环境之分。今天我并不是在比较数据库的好坏,用户也不用过于关注数据库的好坏。一个数据库再强大,对于你来说,只要你用的功能满足你的要求就足够了。只要这部分功能能够很好地支撑你的应用,那么这个数据库对于你们来说就是很好用的。而如果你的应用开发能和数据库的特性融合得比较好,那么这个数据库对于你们来说也会是很好用的。

还有一种观点是,一个优秀的数据库可以让研发放飞自我,任意挥洒烂SQL。这一点确实是的,Oracle就是这样一种数据库,但是目前只有一个Oracle,其他的任意一种数据库都没有给码农SQL自由的权利。而Oracle的这种SQL自由是建立在昂贵的综合使用成本的基础上的。我说的成本高是基于合法使用的基础上的,不要和我纠缠盗版就很便宜。如果系统够简单,MYSQL用户可能连个DBA都省了。

数据库是企业数字化建设进程中最重要的IT基础设施之一。企业的IT部门必须与其使用的数据库建立起十分融洽的关系,一旦对于某种数据库的掌握程度达到了某种程度,在某种数据库上积累的运维知识和经验足够丰富的时候,你会觉得这个数据库用起来也就得心应手了。

前几天我买了一双新鞋,每次买新鞋的时候脚脖子都会磨破,第一次被磨破的时候会很难受,走路都一瘸一拐的。不过没关系,贴上创可贴就OK了。几天后,鞋子一般就磨合好了。如果你觉得这双鞋不好,再换一双,还是如此。数据库好用不好用就像穿鞋一样,跟不跟脚,只有自己知道。如果再怎么磨合都还是磨破脚或者挤脚,那么这个数据库产品可能真的不适合你。而大多数刚开始觉得穿着不够舒适的鞋子,只要你用合适的方法去磨合,总是能磨合好的。

如果应用比较简单,并且已经微服务化了,数据库也被拆分成规模差不多的小型数据库了。那么MySQL可能是你的最佳选择。只要把高可用复制做好,备份做好,运维起来很轻松,大不了杀杀会话,切换下主库就可以了。偶尔出现一些复杂SQL引发的性能问题,也很容易定位并解决掉。

如果你的数据量很大,业务也十分复杂,从业务特性上来看,Oracle才能很好地支撑,但是你选择MySQL做完你的数据库,那就麻烦了。你肯定会觉得MySQL是如此难用,在Oracle上很好解决的问题,到了MySQL上往往陷入绝境。

对某种数据库的喜好、用法都是主观性极强的东西,自己下决心去磨合就好了。没必要去和某些人争论出个结论来。我们小时候争论最多的是赵云和吕布哪个更厉害,实际上他们俩也没直接干过仗,所以也无从谈起。在实际的数据库应用中,也没有哪个用户会奢侈到先用甲数据库跑跑核心应用,过阵子再换乙数据库,PK个高下出来。哪怕做一个十分严格的测试,也仅仅能够获得测试结果而已,到底哪个更好用,还真分辨不出来。综合考虑一下,从头部产品中选择一个,坚决干下去,慢慢就磨合好了。

前阵子和几个客户聊天的时候,客户问我:“你觉得从Oracle做迁移,哪个国产数据库是应用迁移最友好的?”。他肯定希望我说出他们选择的这个数据库产品,但是我说了另外一个,我感觉到他们有点失望。不过我随后说:“你们已经构建起了使用这种数据库的经验,今后再往上迁移应用就越来越轻松了。就目前阶段,对你们而言,你们选择的这个数据库就是应用迁移最友好的数据库!”

请扫码关注数字化经济观察网
责编:高蝶
参与评论
文明上网,理性发言!请遵守新闻评论服务协议
0/200