For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内java编程开发课程,而本文我们就通过案例分析来简单了解一下,高性能数据库架构方法分享。
目前市面上的数据库产品基本都提供了压缩功能,但是由于存储引擎架构和数据库应用场景的不同,产品之间的数据库压缩设计和能力也会产生一些差别。
传统的事务型数据库通常使用定长块存储数据,这样可以保障读写性能,但会带来额外开销和空间浪费。面向OLTP场景的数据库要在数据的写入和更新场景支持更高的TPS,通常会使用行存及B+Tree类的存储引擎,对于数据的压缩会比较保守。这样的存储引擎通常会将定长的内存数据页与持久化数据块对应起来管理数据,而且有些情况下需要将更新数据实时写到数据块中,会导致对页内少量行进行dml操作也需要对整个数据页进行重新压缩,带来更多的overhead;而且定长数据块在进行压缩前难以确定压缩后的数据块大小,也会带来一些空间浪费等问题。
另一方面,分析型数据库天然更适合高压缩比,但压缩会降低查询和更新性能。面向OLAP场景的数据仓库等系统的数据,通常是批量导入的,增量数据相对较少。因此分析型数据库通常使用列存,增量数据写日志,定期重整基线数据的存储引擎。这样的存储引擎通常在批量导入和后台数据重整时进行数据压缩,并采用压缩比更高的压缩策略。如以更大的数据块为单位进行压缩,将更多数据压缩到同一个数据块中,将同一列的数据存储在相邻的数据中,并针对这一列数据的特征对数据进行压缩率更高的编码。但压缩后,可能会明显降低数据的点查性能,减小数据更新的tps。
总结来说,使用压缩率越高的压缩算法,压缩和解压数据的overhead(开销)就越大,对读写性能影响也越大。同时,在我们和用户的交流中也发现,相较于数据压缩率,用户往往更在意数据库性能,尤其是在关键业务场景中。如果在读写路径上对数据进行压缩和解压,会不可避免地消耗计算资源,也会对事务处理性能带来影响。因此,在传统数据库处理业务的场景中,出于性能考虑,普遍只会对归档或备份等访问不频繁的数据开启压缩功能,而对查询和更新比较频繁的数据只能放弃压缩,以满足业务的性能要求。
只有在保证高性能的前提下实现高压缩,才是真正对用户有价值的高压缩,也能实现真正的降本增效。OceanBase基于LSM-Tree架构自研的存储引擎,实现了对OLTP与OLAP负载的同时支持,也能在提供高效的事务处理能力的同时,根据数据存储的特征进行自适应编码压缩,提供高效的数据压缩能力。在过去服务用户的经验中,OceanBase的存储空间甚至可以降低到用户原有数据库系统存储空间的十分之一,能为企业降本增效发挥重要作用,帮助企业更好地打造核心竞争力。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。