第一批上线国产数据库的系统该优化了精选

  • 白鳝
  • 2023/5/8 14:29:59
随着XC工作的深入,一些较为关键的系统已经开始使用国产数据库了。

       随着XC工作的深入,一些较为关键的系统已经开始使用国产数据库了。上周和一个客户进行交流的时候,他们就提了一些关于迁移到国产数据库后的性能问题。比如他们的一个业务系统迁移到某国产数据库后变得忽快忽慢,快的时候与以前Oracle差不多,而慢的时候要慢上数倍,导致业务超时。他们也请了数据库原厂来分析,不过原厂认为数据库本身没问题,问题出在他们使用的虚拟机上,建议他们把应用从虚拟机迁移到物理机上。

       细问下去,原厂也说不清楚具体的原因和道理。因为他们对这个国产数据库不熟悉,使用起来就像面对一个黑匣子一样。和传统的Oracle等数据库不同,国产数据库在性能优化方面的理论与实践确实不多。我们团队简单总结下来,国产数据库的优化不外乎以下几个方面。首先,更换更强的硬件。用硬件的性能来解决国产数据库的性能问题,反正现在硬件价格越来越低,性能也是逐年提升,替换硬件是最简单有效的优化工作。不过这种硬件替代效果有限,能整体提升数据库的性能,但是不能解决一些复杂的应用性能问题。而且通过花钱买新硬件也不是一个可持续的方式,一套两套还行,系统多了,地主家也玩不起。其次,优化IO。更换更强大的IO设备,将IO分散到更多的磁盘上等,对于解决因为IO问题而出现的数据库性能问题,是有立竿见影的好效果的。

       大多数国产数据库的性能问题是执行计划不够好引发的,从底层提升IO能力,降低IO延时,效果还是挺明显的。第三,优化操作系统。通过操作系统底层的参数优化去进一步挖掘潜力,这种方式有一定效果,但是效果有限。目前大多数国产数据库的性能受操作系统影响较大,如果出现同一条SQL执行计划相同,但是执行起来忽快忽慢,那么和操作系统底层调校得与国产数据库不够匹配可能是有一定关系的。只不过这种调校难度较大,甚至同一种数据库在不同的应用负载下,都会有所不同,因此这种优化是成本较高的。第四,SQL或者应用优化。在数据库技术发展的最近20多年里,国外的商用数据库厂商一直是在努力让开发变得更简单,把更多的应用开发需要关注的事情交给数据库来做,开发者只需要写好SQL语句就行了。互联网企业带来了一波逆潮流,他们认为解构复杂的应用,用微服务、中台技术等将复杂的应用拆解开来,让数据库回归本源,只是负责数据的存储与读取,让更多的业务逻辑回归到应用系统中。

       这种应用是互联网应用本身的高并发需求下产生的,十分适合互联网应用的单元化程度比较高的超高并发系统。第五,数据库参数的优化。实际上对于Oracle这样的商用数据库系统,数据库参数优化是应该摆在更重要,更早期的位置上的。

       数据库参数优化好了,数据库系统就不会有大的问题了。而对于我们的国产数据库,通过数据库参数的优化,将数据库适应于某种应用场景,恐怕效果最好的是针对BENCHMARK测试的场景,除此之外,数据库原厂拥有的经验也很少。而企业应用与BENCHMARK测试场景类似的场景极少,所以这些参数设置模板对于实际生产环境来说帮助不大。通过数据库参数优化来优化国产数据库,还需要经过大量的实际应用场景磨合,才能够总结出一些有用的经验。因此这个优化反而目前做起来比较费劲了。

       从上面的讨论中,可能已经有朋友看出来了,SQL和应用优化才是国产数据库的重头戏。在一些数据库国产化迁移的项目中,我们实际上已经验证了这一点。 

责任编辑:文刀    来源:白鳝的洞穴

相似话题