把数据库该干的活交给OS可行吗

​这两天在思考前几天一个朋友提到的一个问题,现在的OS越来越强大了,能不能把一些数据库该干的事情交给OS去做,这样数据库的内核可以大大的简化。这个观点让我想起了十多年前Linux是否需要提供o_direct这个文件IO选项给开发者的讨论。当时Linus Torvalds说了那句十分著名的话—“In short, the whole “let’s bypass the OS” notion is just fundamentally broken. It sounds simple, but it sounds simple only to an idiot who writes databases and doesn’t even UNDERSTAND what an OS is meant to do”。他甚至认为绕过OS强大的VMM设计去处理IO是傻瓜才会干的事情,因为Linux已经为数据库类的应用提供了强大的能力。

实际上早期的数据库也是十分依赖于操作系统的,我大学毕业后使用过的第一个数据库RMS就是一个基于openVMS的记录管理系统,其底层依赖于操作系统的基础IPC能力构建。后来随着数据库变得越来越复杂,需要支持的底层OS平台越来越多,数据库产品逐渐把一些以前OS干的事情由自己独立来干。2012年的一次测试,让我对数据库与OS融合后的能力有了深刻的体会。当时在一台Oracle公司的T4-8上,服务器+Solaris操作系统+Oracle 11g的组合跑出了惊人的高性能。不用做复杂的调优,仅仅装好数据库,简单调整一下数据库参数,就取得了那次测试最佳的成绩。后来我和参加测试的老外聊了聊,他说在这个组合里,Oracle的一些并发控制相关底层调用得到了全面优化,操作系统帮助Oracle的闩锁与锁操作的并发能力得到了极大的提升。

实际上开头提的这个问题应该不是问题了,现在的Linux与90年代刚刚进入我们视野的时候已经不可同日而语了,那时候的Linux可以很好的支撑WEB应用,但是对数据库的底层支持还比较弱。而现在Linux的能力已经得到了巨大的强化,无论是Redis,MongoDB还是ClickHose,这些新生代的数据库产品无一例外的充分利用了操作系统底层的能力,从而简化了很多传统数据库自己要做的复杂控制。外加在存储引擎上使用了大量的开源技术,使得数据库研发的门槛大大降低了。包括我们耳熟能详的开源数据库MySQL和Postgresql,它们在存储引擎上也充分利用了操作系统的能力。充分利用OS FILE CACHE的能力来缓冲数据,从而提升IO性能,通过使用带日志的文件系统来消除数据库double write的开销,这一切都是数据库向OS能力借力的有效例证。

不过通用关系型数据库面临的场景十分复杂,在某些特殊的高负载场景下,OS的自动优化能力还是无法满足数据库的需求。2007年引发的关于o_direct的讨论就是一个十分典型的例证。当时数据库厂商需要自己来控制IO,而不是使用OS提供的能力。

在一个DBA的眼里,Linus的言论似乎是有些武断了,针对复杂的通用关系型数据库来说,数据库自己管理自己的缓冲,在有些时候比完全依赖于OS提供的文件缓冲能力,要高效的多。数据库有自己的一些更为复杂的判断热数据的方法,因此在shared buffer中合适AGEOUT页面,清理哪些页面,数据库管理系统可能更清楚。

不过对于大多数业务应用来说,OS提供的FILE CACHE已经能够很好的帮助我们提升性能了。在目前的Postgresql的官方文档中,还是建议shared buffer只使用20-30%,剩下的内存交给OS。有些PG用户认为这个建议十分好,他们的数据库按照这个建议设置后性能十分稳定。不过也有些用户认为把物理内存尽可能交给shared buffer具有更好的性能。这是因为业务应用场景的复杂性,导致两种策略可能在某些场景下会出现相反的效果。

对于一个数据库应用系统来说,其优化是从上到下的。

对于一个复杂的应用系统来说,越往上的优化器效果就越好,只不过越往上的优化对于前期建设队伍的能力要求也越高,前期的投入也越大。对于一些较小的,不太复杂的应用系统来说,只需要从下层做好优化就可以了,其实施成本也很低。而负载越高,越复杂的系统就越需要更上层的优化。对于有些系统来说,仅仅依赖操作系统提供的优化能力就不足够了。就像是开手动挡的车和自动挡的车,在一般路况下,自动挡车就足够用了,但是在一些特殊的户外陡坡上,手动挡车可能可以胜任,自动挡车就完全不胜任了。因为自动化的处理能力还是有限的。

不过随着操作系统的不断发展,其能力也越来越强,操作系统对数据库的支撑能力也在不断增强。有些以前需要依靠数据库核心代码去优化的工作依然可以由操作系统来承担。一些专用场景的数据库产品会首先从中受益,有时候数据库不用做升级,升级一下OS,数据库性能自然就提升了。不过针对某种数据库去定制与优化操作系统也是一种思路,在一些云原生的数据库或者公有云RDS上,可能更容易实现。​

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/228994.html<

(0)
管理的头像管理
上一篇2025-04-18 13:45
下一篇 2025-04-18 13:46

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注